{"cells":[{"cell_type":"markdown","id":"de73dbb7-d786-498c-bcc9-931a942104e5","metadata":{"id":"de73dbb7-d786-498c-bcc9-931a942104e5"},"source":["## Importing Required Libraries"]},{"cell_type":"code","execution_count":7,"id":"84d987d2-57c1-4944-9951-550f6d5254c8","metadata":{"id":"84d987d2-57c1-4944-9951-550f6d5254c8","executionInfo":{"status":"ok","timestamp":1711022173117,"user_tz":-60,"elapsed":469,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}}},"outputs":[],"source":["import pandas as pd\n","import seaborn as sns\n","import matplotlib.pyplot as plt\n","from sklearn.model_selection import train_test_split\n","from transformers import BertTokenizer\n","from tensorflow.keras.optimizers import Adam\n","sns.set(style=\"darkgrid\")"]},{"cell_type":"markdown","id":"6b070288-3a57-45c4-a77d-a43aa12b2b2f","metadata":{"id":"6b070288-3a57-45c4-a77d-a43aa12b2b2f"},"source":["## Importing Amazon One Plus Data"]},{"cell_type":"code","execution_count":8,"id":"168d6604-3691-426f-92fd-1b2a251da0ed","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":297},"id":"168d6604-3691-426f-92fd-1b2a251da0ed","executionInfo":{"status":"ok","timestamp":1711022174874,"user_tz":-60,"elapsed":1759,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}},"outputId":"b1244590-e7fd-4e3b-9954-d5f04b6fe91d"},"outputs":[{"output_type":"stream","name":"stdout","text":["(30612, 2)\n","positive    22504\n","neutral      4172\n","negative     3936\n","Name: categorical_rating, dtype: int64\n"]},{"output_type":"execute_result","data":{"text/plain":["  categorical_rating                                        review_text\n","0           positive  \\n  Yea..pre-ordered on 28 July, got it on 4 A...\n","1           positive  \\n  Got it delivered yesterday , used for abou...\n","2           positive                              \\n  An amazing phone!\n","3           positive                                    \\n  Brilliant..\n","4           positive  \\n  I was skeptical about changing from One pl..."],"text/html":["\n","  <div id=\"df-80208f97-b1c9-4c56-836e-5b8137429c81\" class=\"colab-df-container\">\n","    <div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>categorical_rating</th>\n","      <th>review_text</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>positive</td>\n","      <td>\\n  Yea..pre-ordered on 28 July, got it on 4 A...</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>positive</td>\n","      <td>\\n  Got it delivered yesterday , used for abou...</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>positive</td>\n","      <td>\\n  An amazing phone!</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>positive</td>\n","      <td>\\n  Brilliant..</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>positive</td>\n","      <td>\\n  I was skeptical about changing from One pl...</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>\n","    <div class=\"colab-df-buttons\">\n","\n","  <div class=\"colab-df-container\">\n","    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-80208f97-b1c9-4c56-836e-5b8137429c81')\"\n","            title=\"Convert this dataframe to an interactive table.\"\n","            style=\"display:none;\">\n","\n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n","    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n","  </svg>\n","    </button>\n","\n","  <style>\n","    .colab-df-container {\n","      display:flex;\n","      gap: 12px;\n","    }\n","\n","    .colab-df-convert {\n","      background-color: #E8F0FE;\n","      border: none;\n","      border-radius: 50%;\n","      cursor: pointer;\n","      display: none;\n","      fill: #1967D2;\n","      height: 32px;\n","      padding: 0 0 0 0;\n","      width: 32px;\n","    }\n","\n","    .colab-df-convert:hover {\n","      background-color: #E2EBFA;\n","      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","      fill: #174EA6;\n","    }\n","\n","    .colab-df-buttons div {\n","      margin-bottom: 4px;\n","    }\n","\n","    [theme=dark] .colab-df-convert {\n","      background-color: #3B4455;\n","      fill: #D2E3FC;\n","    }\n","\n","    [theme=dark] .colab-df-convert:hover {\n","      background-color: #434B5C;\n","      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","      fill: #FFFFFF;\n","    }\n","  </style>\n","\n","    <script>\n","      const buttonEl =\n","        document.querySelector('#df-80208f97-b1c9-4c56-836e-5b8137429c81 button.colab-df-convert');\n","      buttonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","      async function convertToInteractive(key) {\n","        const element = document.querySelector('#df-80208f97-b1c9-4c56-836e-5b8137429c81');\n","        const dataTable =\n","          await google.colab.kernel.invokeFunction('convertToInteractive',\n","                                                    [key], {});\n","        if (!dataTable) return;\n","\n","        const docLinkHtml = 'Like what you see? Visit the ' +\n","          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n","          + ' to learn more about interactive tables.';\n","        element.innerHTML = '';\n","        dataTable['output_type'] = 'display_data';\n","        await google.colab.output.renderOutput(dataTable, element);\n","        const docLink = document.createElement('div');\n","        docLink.innerHTML = docLinkHtml;\n","        element.appendChild(docLink);\n","      }\n","    </script>\n","  </div>\n","\n","\n","<div id=\"df-f8380d96-0f30-4829-b690-9c5b0be8fae0\">\n","  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-f8380d96-0f30-4829-b690-9c5b0be8fae0')\"\n","            title=\"Suggest charts\"\n","            style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","     width=\"24px\">\n","    <g>\n","        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n","    </g>\n","</svg>\n","  </button>\n","\n","<style>\n","  .colab-df-quickchart {\n","      --bg-color: #E8F0FE;\n","      --fill-color: #1967D2;\n","      --hover-bg-color: #E2EBFA;\n","      --hover-fill-color: #174EA6;\n","      --disabled-fill-color: #AAA;\n","      --disabled-bg-color: #DDD;\n","  }\n","\n","  [theme=dark] .colab-df-quickchart {\n","      --bg-color: #3B4455;\n","      --fill-color: #D2E3FC;\n","      --hover-bg-color: #434B5C;\n","      --hover-fill-color: #FFFFFF;\n","      --disabled-bg-color: #3B4455;\n","      --disabled-fill-color: #666;\n","  }\n","\n","  .colab-df-quickchart {\n","    background-color: var(--bg-color);\n","    border: none;\n","    border-radius: 50%;\n","    cursor: pointer;\n","    display: none;\n","    fill: var(--fill-color);\n","    height: 32px;\n","    padding: 0;\n","    width: 32px;\n","  }\n","\n","  .colab-df-quickchart:hover {\n","    background-color: var(--hover-bg-color);\n","    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n","    fill: var(--button-hover-fill-color);\n","  }\n","\n","  .colab-df-quickchart-complete:disabled,\n","  .colab-df-quickchart-complete:disabled:hover {\n","    background-color: var(--disabled-bg-color);\n","    fill: var(--disabled-fill-color);\n","    box-shadow: none;\n","  }\n","\n","  .colab-df-spinner {\n","    border: 2px solid var(--fill-color);\n","    border-color: transparent;\n","    border-bottom-color: var(--fill-color);\n","    animation:\n","      spin 1s steps(1) infinite;\n","  }\n","\n","  @keyframes spin {\n","    0% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","      border-left-color: var(--fill-color);\n","    }\n","    20% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    30% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","      border-right-color: var(--fill-color);\n","    }\n","    40% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    60% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","    }\n","    80% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-bottom-color: var(--fill-color);\n","    }\n","    90% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","    }\n","  }\n","</style>\n","\n","  <script>\n","    async function quickchart(key) {\n","      const quickchartButtonEl =\n","        document.querySelector('#' + key + ' button');\n","      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n","      quickchartButtonEl.classList.add('colab-df-spinner');\n","      try {\n","        const charts = await google.colab.kernel.invokeFunction(\n","            'suggestCharts', [key], {});\n","      } catch (error) {\n","        console.error('Error during call to suggestCharts:', error);\n","      }\n","      quickchartButtonEl.classList.remove('colab-df-spinner');\n","      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n","    }\n","    (() => {\n","      let quickchartButtonEl =\n","        document.querySelector('#df-f8380d96-0f30-4829-b690-9c5b0be8fae0 button');\n","      quickchartButtonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","    })();\n","  </script>\n","</div>\n","    </div>\n","  </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"amazon_df","summary":"{\n  \"name\": \"amazon_df\",\n  \"rows\": 30612,\n  \"fields\": [\n    {\n      \"column\": \"categorical_rating\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 3,\n        \"samples\": [\n          \"positive\",\n          \"negative\",\n          \"neutral\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"review_text\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 25010,\n        \"samples\": [\n          \"\\n  Worst camara quality, don't buy this if you want best pics\\n\",\n          \"\\n  display 10/10\",\n          \"\\n  Processor was to old you gave new processor\\n\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"}},"metadata":{},"execution_count":8}],"source":["file_path = r\"/content/amazon_one_plus_reviews.json\"\n","df = pd.read_json(file_path)\n","\n","# Extract the numeric rating and convert to float\n","df['numeric_rating'] = df[\"review_rating\"].str.extract(r'([0-9]+\\.?[0-9]*)').astype(float)\n","\n","# Function to convert ratings\n","def convert_rating(rating):\n","    if rating >= 4.0:\n","        return 'positive'\n","    elif rating == 3.0:\n","        return 'neutral'\n","    else:\n","        return 'negative'\n","\n","# Apply the function to the rating column\n","df['categorical_rating'] = df['numeric_rating'].apply(convert_rating)\n","\n","amazon_df = df[['categorical_rating', 'review_text']]\n","print(amazon_df.shape)\n","print(amazon_df['categorical_rating'].value_counts())\n","amazon_df.head()"]},{"cell_type":"markdown","source":["## Importing Iphone Data"],"metadata":{"id":"9ba566f3-accc-46ae-84ea-4669ec66850d"},"id":"9ba566f3-accc-46ae-84ea-4669ec66850d"},{"cell_type":"code","source":["file_path = r\"/content/apple_iphone_11_reviews.json\"\n","df = pd.read_json(file_path)\n","\n","# Extract the numeric rating and convert to float\n","df['numeric_rating'] = df[\"review_rating\"].str.extract(r'([0-9]+\\.?[0-9]*)').astype(float)\n","\n","# Function to convert ratings\n","def convert_rating(rating):\n","    if rating >= 4.0:\n","        return 'positive'\n","    elif rating == 3.0:\n","        return 'neutral'\n","    else:\n","        return 'negative'\n","\n","# Apply the function to the rating column\n","df['categorical_rating'] = df['numeric_rating'].apply(convert_rating)\n","\n","iphone_df = df[['categorical_rating', 'review_text']]\n","print(iphone_df.shape)\n","print(iphone_df['categorical_rating'].value_counts())\n","iphone_df.head()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":297},"id":"cKix-rL81tLN","executionInfo":{"status":"ok","timestamp":1711022174874,"user_tz":-60,"elapsed":30,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}},"outputId":"b7589d7d-2d95-490b-eca7-b981bcc3864d"},"id":"cKix-rL81tLN","execution_count":9,"outputs":[{"output_type":"stream","name":"stdout","text":["(5010, 2)\n","positive    4451\n","negative     406\n","neutral      153\n","Name: categorical_rating, dtype: int64\n"]},{"output_type":"execute_result","data":{"text/plain":["  categorical_rating                                        review_text\n","0            neutral                                              NOTE:\n","1           negative  Very bad experience with this iPhone xr phone....\n","2           positive  Amazing phone with amazing camera coming from ...\n","3           negative  So I got the iPhone XR just today. The product...\n","4           positive  I've been an android user all my life until I ..."],"text/html":["\n","  <div id=\"df-a31c71fc-24e1-4dfa-976e-cfbd3e02891a\" class=\"colab-df-container\">\n","    <div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>categorical_rating</th>\n","      <th>review_text</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>neutral</td>\n","      <td>NOTE:</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>negative</td>\n","      <td>Very bad experience with this iPhone xr phone....</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>positive</td>\n","      <td>Amazing phone with amazing camera coming from ...</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>negative</td>\n","      <td>So I got the iPhone XR just today. The product...</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>positive</td>\n","      <td>I've been an android user all my life until I ...</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>\n","    <div class=\"colab-df-buttons\">\n","\n","  <div class=\"colab-df-container\">\n","    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-a31c71fc-24e1-4dfa-976e-cfbd3e02891a')\"\n","            title=\"Convert this dataframe to an interactive table.\"\n","            style=\"display:none;\">\n","\n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n","    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n","  </svg>\n","    </button>\n","\n","  <style>\n","    .colab-df-container {\n","      display:flex;\n","      gap: 12px;\n","    }\n","\n","    .colab-df-convert {\n","      background-color: #E8F0FE;\n","      border: none;\n","      border-radius: 50%;\n","      cursor: pointer;\n","      display: none;\n","      fill: #1967D2;\n","      height: 32px;\n","      padding: 0 0 0 0;\n","      width: 32px;\n","    }\n","\n","    .colab-df-convert:hover {\n","      background-color: #E2EBFA;\n","      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","      fill: #174EA6;\n","    }\n","\n","    .colab-df-buttons div {\n","      margin-bottom: 4px;\n","    }\n","\n","    [theme=dark] .colab-df-convert {\n","      background-color: #3B4455;\n","      fill: #D2E3FC;\n","    }\n","\n","    [theme=dark] .colab-df-convert:hover {\n","      background-color: #434B5C;\n","      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","      fill: #FFFFFF;\n","    }\n","  </style>\n","\n","    <script>\n","      const buttonEl =\n","        document.querySelector('#df-a31c71fc-24e1-4dfa-976e-cfbd3e02891a button.colab-df-convert');\n","      buttonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","      async function convertToInteractive(key) {\n","        const element = document.querySelector('#df-a31c71fc-24e1-4dfa-976e-cfbd3e02891a');\n","        const dataTable =\n","          await google.colab.kernel.invokeFunction('convertToInteractive',\n","                                                    [key], {});\n","        if (!dataTable) return;\n","\n","        const docLinkHtml = 'Like what you see? Visit the ' +\n","          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n","          + ' to learn more about interactive tables.';\n","        element.innerHTML = '';\n","        dataTable['output_type'] = 'display_data';\n","        await google.colab.output.renderOutput(dataTable, element);\n","        const docLink = document.createElement('div');\n","        docLink.innerHTML = docLinkHtml;\n","        element.appendChild(docLink);\n","      }\n","    </script>\n","  </div>\n","\n","\n","<div id=\"df-ddf1fa8d-4be6-4d59-89c1-eab39c3d489c\">\n","  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-ddf1fa8d-4be6-4d59-89c1-eab39c3d489c')\"\n","            title=\"Suggest charts\"\n","            style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","     width=\"24px\">\n","    <g>\n","        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n","    </g>\n","</svg>\n","  </button>\n","\n","<style>\n","  .colab-df-quickchart {\n","      --bg-color: #E8F0FE;\n","      --fill-color: #1967D2;\n","      --hover-bg-color: #E2EBFA;\n","      --hover-fill-color: #174EA6;\n","      --disabled-fill-color: #AAA;\n","      --disabled-bg-color: #DDD;\n","  }\n","\n","  [theme=dark] .colab-df-quickchart {\n","      --bg-color: #3B4455;\n","      --fill-color: #D2E3FC;\n","      --hover-bg-color: #434B5C;\n","      --hover-fill-color: #FFFFFF;\n","      --disabled-bg-color: #3B4455;\n","      --disabled-fill-color: #666;\n","  }\n","\n","  .colab-df-quickchart {\n","    background-color: var(--bg-color);\n","    border: none;\n","    border-radius: 50%;\n","    cursor: pointer;\n","    display: none;\n","    fill: var(--fill-color);\n","    height: 32px;\n","    padding: 0;\n","    width: 32px;\n","  }\n","\n","  .colab-df-quickchart:hover {\n","    background-color: var(--hover-bg-color);\n","    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n","    fill: var(--button-hover-fill-color);\n","  }\n","\n","  .colab-df-quickchart-complete:disabled,\n","  .colab-df-quickchart-complete:disabled:hover {\n","    background-color: var(--disabled-bg-color);\n","    fill: var(--disabled-fill-color);\n","    box-shadow: none;\n","  }\n","\n","  .colab-df-spinner {\n","    border: 2px solid var(--fill-color);\n","    border-color: transparent;\n","    border-bottom-color: var(--fill-color);\n","    animation:\n","      spin 1s steps(1) infinite;\n","  }\n","\n","  @keyframes spin {\n","    0% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","      border-left-color: var(--fill-color);\n","    }\n","    20% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    30% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","      border-right-color: var(--fill-color);\n","    }\n","    40% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    60% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","    }\n","    80% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-bottom-color: var(--fill-color);\n","    }\n","    90% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","    }\n","  }\n","</style>\n","\n","  <script>\n","    async function quickchart(key) {\n","      const quickchartButtonEl =\n","        document.querySelector('#' + key + ' button');\n","      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n","      quickchartButtonEl.classList.add('colab-df-spinner');\n","      try {\n","        const charts = await google.colab.kernel.invokeFunction(\n","            'suggestCharts', [key], {});\n","      } catch (error) {\n","        console.error('Error during call to suggestCharts:', error);\n","      }\n","      quickchartButtonEl.classList.remove('colab-df-spinner');\n","      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n","    }\n","    (() => {\n","      let quickchartButtonEl =\n","        document.querySelector('#df-ddf1fa8d-4be6-4d59-89c1-eab39c3d489c button');\n","      quickchartButtonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","    })();\n","  </script>\n","</div>\n","    </div>\n","  </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"iphone_df","summary":"{\n  \"name\": \"iphone_df\",\n  \"rows\": 5010,\n  \"fields\": [\n    {\n      \"column\": \"categorical_rating\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 3,\n        \"samples\": [\n          \"neutral\",\n          \"negative\",\n          \"positive\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"review_text\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 4089,\n        \"samples\": [\n          \"The phone freezes frequently. Battery doesn\\u2019t last long. On the whole I am very disappointed with the  phone. Did not expect this from Apple.\",\n          \"Amazon service is good.\",\n          \"Best iphone..and the face unlock is superfast\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"}},"metadata":{},"execution_count":9}]},{"cell_type":"markdown","source":["## Importing K8 Data"],"metadata":{"id":"20so7ZIW1tL9"},"id":"20so7ZIW1tL9"},{"cell_type":"code","source":["file_path = r\"/content/K8 Reviews v0.2.csv\"\n","df = pd.read_csv(file_path)\n","df = df.rename(columns={'review': 'review_text'})\n","df['categorical_rating'] = df['sentiment'].replace({1: 'positive', 0: 'negative'})\n","df['categorical_rating'] = df['categorical_rating'].astype(str)\n","\n","k8_df = df[['categorical_rating', 'review_text']]\n","print(k8_df.shape)\n","print(k8_df['categorical_rating'].value_counts())\n","k8_df.head()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":279},"id":"gA26Itj11xCc","executionInfo":{"status":"ok","timestamp":1711022174875,"user_tz":-60,"elapsed":27,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}},"outputId":"abff4b16-1357-478a-e256-54019a0b13f4"},"id":"gA26Itj11xCc","execution_count":10,"outputs":[{"output_type":"stream","name":"stdout","text":["(14675, 2)\n","negative    7712\n","positive    6963\n","Name: categorical_rating, dtype: int64\n"]},{"output_type":"execute_result","data":{"text/plain":["  categorical_rating                                        review_text\n","0           positive             Good but need updates and improvements\n","1           negative  Worst mobile i have bought ever, Battery is dr...\n","2           positive  when I will get my 10% cash back.... its alrea...\n","3           positive                                               Good\n","4           negative  The worst phone everThey have changed the last..."],"text/html":["\n","  <div id=\"df-5cb87c4e-3342-42b8-9078-e0ac8c6249b2\" class=\"colab-df-container\">\n","    <div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>categorical_rating</th>\n","      <th>review_text</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>positive</td>\n","      <td>Good but need updates and improvements</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>negative</td>\n","      <td>Worst mobile i have bought ever, Battery is dr...</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>positive</td>\n","      <td>when I will get my 10% cash back.... its alrea...</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>positive</td>\n","      <td>Good</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>negative</td>\n","      <td>The worst phone everThey have changed the last...</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>\n","    <div class=\"colab-df-buttons\">\n","\n","  <div class=\"colab-df-container\">\n","    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-5cb87c4e-3342-42b8-9078-e0ac8c6249b2')\"\n","            title=\"Convert this dataframe to an interactive table.\"\n","            style=\"display:none;\">\n","\n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n","    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n","  </svg>\n","    </button>\n","\n","  <style>\n","    .colab-df-container {\n","      display:flex;\n","      gap: 12px;\n","    }\n","\n","    .colab-df-convert {\n","      background-color: #E8F0FE;\n","      border: none;\n","      border-radius: 50%;\n","      cursor: pointer;\n","      display: none;\n","      fill: #1967D2;\n","      height: 32px;\n","      padding: 0 0 0 0;\n","      width: 32px;\n","    }\n","\n","    .colab-df-convert:hover {\n","      background-color: #E2EBFA;\n","      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","      fill: #174EA6;\n","    }\n","\n","    .colab-df-buttons div {\n","      margin-bottom: 4px;\n","    }\n","\n","    [theme=dark] .colab-df-convert {\n","      background-color: #3B4455;\n","      fill: #D2E3FC;\n","    }\n","\n","    [theme=dark] .colab-df-convert:hover {\n","      background-color: #434B5C;\n","      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","      fill: #FFFFFF;\n","    }\n","  </style>\n","\n","    <script>\n","      const buttonEl =\n","        document.querySelector('#df-5cb87c4e-3342-42b8-9078-e0ac8c6249b2 button.colab-df-convert');\n","      buttonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","      async function convertToInteractive(key) {\n","        const element = document.querySelector('#df-5cb87c4e-3342-42b8-9078-e0ac8c6249b2');\n","        const dataTable =\n","          await google.colab.kernel.invokeFunction('convertToInteractive',\n","                                                    [key], {});\n","        if (!dataTable) return;\n","\n","        const docLinkHtml = 'Like what you see? Visit the ' +\n","          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n","          + ' to learn more about interactive tables.';\n","        element.innerHTML = '';\n","        dataTable['output_type'] = 'display_data';\n","        await google.colab.output.renderOutput(dataTable, element);\n","        const docLink = document.createElement('div');\n","        docLink.innerHTML = docLinkHtml;\n","        element.appendChild(docLink);\n","      }\n","    </script>\n","  </div>\n","\n","\n","<div id=\"df-6d269995-9a9e-402f-af51-ff3cc9b465c9\">\n","  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-6d269995-9a9e-402f-af51-ff3cc9b465c9')\"\n","            title=\"Suggest charts\"\n","            style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","     width=\"24px\">\n","    <g>\n","        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n","    </g>\n","</svg>\n","  </button>\n","\n","<style>\n","  .colab-df-quickchart {\n","      --bg-color: #E8F0FE;\n","      --fill-color: #1967D2;\n","      --hover-bg-color: #E2EBFA;\n","      --hover-fill-color: #174EA6;\n","      --disabled-fill-color: #AAA;\n","      --disabled-bg-color: #DDD;\n","  }\n","\n","  [theme=dark] .colab-df-quickchart {\n","      --bg-color: #3B4455;\n","      --fill-color: #D2E3FC;\n","      --hover-bg-color: #434B5C;\n","      --hover-fill-color: #FFFFFF;\n","      --disabled-bg-color: #3B4455;\n","      --disabled-fill-color: #666;\n","  }\n","\n","  .colab-df-quickchart {\n","    background-color: var(--bg-color);\n","    border: none;\n","    border-radius: 50%;\n","    cursor: pointer;\n","    display: none;\n","    fill: var(--fill-color);\n","    height: 32px;\n","    padding: 0;\n","    width: 32px;\n","  }\n","\n","  .colab-df-quickchart:hover {\n","    background-color: var(--hover-bg-color);\n","    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n","    fill: var(--button-hover-fill-color);\n","  }\n","\n","  .colab-df-quickchart-complete:disabled,\n","  .colab-df-quickchart-complete:disabled:hover {\n","    background-color: var(--disabled-bg-color);\n","    fill: var(--disabled-fill-color);\n","    box-shadow: none;\n","  }\n","\n","  .colab-df-spinner {\n","    border: 2px solid var(--fill-color);\n","    border-color: transparent;\n","    border-bottom-color: var(--fill-color);\n","    animation:\n","      spin 1s steps(1) infinite;\n","  }\n","\n","  @keyframes spin {\n","    0% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","      border-left-color: var(--fill-color);\n","    }\n","    20% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    30% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","      border-right-color: var(--fill-color);\n","    }\n","    40% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    60% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","    }\n","    80% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-bottom-color: var(--fill-color);\n","    }\n","    90% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","    }\n","  }\n","</style>\n","\n","  <script>\n","    async function quickchart(key) {\n","      const quickchartButtonEl =\n","        document.querySelector('#' + key + ' button');\n","      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n","      quickchartButtonEl.classList.add('colab-df-spinner');\n","      try {\n","        const charts = await google.colab.kernel.invokeFunction(\n","            'suggestCharts', [key], {});\n","      } catch (error) {\n","        console.error('Error during call to suggestCharts:', error);\n","      }\n","      quickchartButtonEl.classList.remove('colab-df-spinner');\n","      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n","    }\n","    (() => {\n","      let quickchartButtonEl =\n","        document.querySelector('#df-6d269995-9a9e-402f-af51-ff3cc9b465c9 button');\n","      quickchartButtonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","    })();\n","  </script>\n","</div>\n","    </div>\n","  </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"k8_df","summary":"{\n  \"name\": \"k8_df\",\n  \"rows\": 14675,\n  \"fields\": [\n    {\n      \"column\": \"categorical_rating\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 2,\n        \"samples\": [\n          \"negative\",\n          \"positive\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"review_text\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 12967,\n        \"samples\": [\n          \"excellent one. All in one. Nice battery back up...\",\n          \"In this price rate it's a very decent phone. Everything works fine but 4 stars rating because of dual camera depth mode is ok not so good. Better also works fine and turbo support charger works perfectly . In the last I love this phone\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"}},"metadata":{},"execution_count":10}]},{"cell_type":"markdown","id":"a2f2f9fa-d0fc-403b-ba23-3977e379ab0c","metadata":{"id":"a2f2f9fa-d0fc-403b-ba23-3977e379ab0c"},"source":["## Merge All DFs"]},{"cell_type":"code","execution_count":11,"id":"97b1a013-2dfa-4131-9e85-774747c96cf5","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":297},"id":"97b1a013-2dfa-4131-9e85-774747c96cf5","executionInfo":{"status":"ok","timestamp":1711022174875,"user_tz":-60,"elapsed":24,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}},"outputId":"dd2ca89a-b4d0-42ff-e669-5f831a52964f"},"outputs":[{"output_type":"stream","name":"stdout","text":["positive    33918\n","negative    12054\n","neutral      4325\n","Name: categorical_rating, dtype: int64\n","(50297, 2)\n"]},{"output_type":"execute_result","data":{"text/plain":["  categorical_rating                                        review_text\n","0           positive  \\n  Yea..pre-ordered on 28 July, got it on 4 A...\n","1           positive  \\n  Got it delivered yesterday , used for abou...\n","2           positive                              \\n  An amazing phone!\n","3           positive                                    \\n  Brilliant..\n","4           positive  \\n  I was skeptical about changing from One pl..."],"text/html":["\n","  <div id=\"df-cb4bd1bc-8433-4132-8a54-bb7af6f227fb\" class=\"colab-df-container\">\n","    <div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>categorical_rating</th>\n","      <th>review_text</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>positive</td>\n","      <td>\\n  Yea..pre-ordered on 28 July, got it on 4 A...</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>positive</td>\n","      <td>\\n  Got it delivered yesterday , used for abou...</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>positive</td>\n","      <td>\\n  An amazing phone!</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>positive</td>\n","      <td>\\n  Brilliant..</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>positive</td>\n","      <td>\\n  I was skeptical about changing from One pl...</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>\n","    <div class=\"colab-df-buttons\">\n","\n","  <div class=\"colab-df-container\">\n","    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-cb4bd1bc-8433-4132-8a54-bb7af6f227fb')\"\n","            title=\"Convert this dataframe to an interactive table.\"\n","            style=\"display:none;\">\n","\n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n","    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n","  </svg>\n","    </button>\n","\n","  <style>\n","    .colab-df-container {\n","      display:flex;\n","      gap: 12px;\n","    }\n","\n","    .colab-df-convert {\n","      background-color: #E8F0FE;\n","      border: none;\n","      border-radius: 50%;\n","      cursor: pointer;\n","      display: none;\n","      fill: #1967D2;\n","      height: 32px;\n","      padding: 0 0 0 0;\n","      width: 32px;\n","    }\n","\n","    .colab-df-convert:hover {\n","      background-color: #E2EBFA;\n","      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","      fill: #174EA6;\n","    }\n","\n","    .colab-df-buttons div {\n","      margin-bottom: 4px;\n","    }\n","\n","    [theme=dark] .colab-df-convert {\n","      background-color: #3B4455;\n","      fill: #D2E3FC;\n","    }\n","\n","    [theme=dark] .colab-df-convert:hover {\n","      background-color: #434B5C;\n","      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","      fill: #FFFFFF;\n","    }\n","  </style>\n","\n","    <script>\n","      const buttonEl =\n","        document.querySelector('#df-cb4bd1bc-8433-4132-8a54-bb7af6f227fb button.colab-df-convert');\n","      buttonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","      async function convertToInteractive(key) {\n","        const element = document.querySelector('#df-cb4bd1bc-8433-4132-8a54-bb7af6f227fb');\n","        const dataTable =\n","          await google.colab.kernel.invokeFunction('convertToInteractive',\n","                                                    [key], {});\n","        if (!dataTable) return;\n","\n","        const docLinkHtml = 'Like what you see? Visit the ' +\n","          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n","          + ' to learn more about interactive tables.';\n","        element.innerHTML = '';\n","        dataTable['output_type'] = 'display_data';\n","        await google.colab.output.renderOutput(dataTable, element);\n","        const docLink = document.createElement('div');\n","        docLink.innerHTML = docLinkHtml;\n","        element.appendChild(docLink);\n","      }\n","    </script>\n","  </div>\n","\n","\n","<div id=\"df-f9e92c5a-1cfa-44ab-9d2c-bb27ff037036\">\n","  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-f9e92c5a-1cfa-44ab-9d2c-bb27ff037036')\"\n","            title=\"Suggest charts\"\n","            style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","     width=\"24px\">\n","    <g>\n","        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n","    </g>\n","</svg>\n","  </button>\n","\n","<style>\n","  .colab-df-quickchart {\n","      --bg-color: #E8F0FE;\n","      --fill-color: #1967D2;\n","      --hover-bg-color: #E2EBFA;\n","      --hover-fill-color: #174EA6;\n","      --disabled-fill-color: #AAA;\n","      --disabled-bg-color: #DDD;\n","  }\n","\n","  [theme=dark] .colab-df-quickchart {\n","      --bg-color: #3B4455;\n","      --fill-color: #D2E3FC;\n","      --hover-bg-color: #434B5C;\n","      --hover-fill-color: #FFFFFF;\n","      --disabled-bg-color: #3B4455;\n","      --disabled-fill-color: #666;\n","  }\n","\n","  .colab-df-quickchart {\n","    background-color: var(--bg-color);\n","    border: none;\n","    border-radius: 50%;\n","    cursor: pointer;\n","    display: none;\n","    fill: var(--fill-color);\n","    height: 32px;\n","    padding: 0;\n","    width: 32px;\n","  }\n","\n","  .colab-df-quickchart:hover {\n","    background-color: var(--hover-bg-color);\n","    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n","    fill: var(--button-hover-fill-color);\n","  }\n","\n","  .colab-df-quickchart-complete:disabled,\n","  .colab-df-quickchart-complete:disabled:hover {\n","    background-color: var(--disabled-bg-color);\n","    fill: var(--disabled-fill-color);\n","    box-shadow: none;\n","  }\n","\n","  .colab-df-spinner {\n","    border: 2px solid var(--fill-color);\n","    border-color: transparent;\n","    border-bottom-color: var(--fill-color);\n","    animation:\n","      spin 1s steps(1) infinite;\n","  }\n","\n","  @keyframes spin {\n","    0% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","      border-left-color: var(--fill-color);\n","    }\n","    20% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    30% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","      border-right-color: var(--fill-color);\n","    }\n","    40% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    60% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","    }\n","    80% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-bottom-color: var(--fill-color);\n","    }\n","    90% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","    }\n","  }\n","</style>\n","\n","  <script>\n","    async function quickchart(key) {\n","      const quickchartButtonEl =\n","        document.querySelector('#' + key + ' button');\n","      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n","      quickchartButtonEl.classList.add('colab-df-spinner');\n","      try {\n","        const charts = await google.colab.kernel.invokeFunction(\n","            'suggestCharts', [key], {});\n","      } catch (error) {\n","        console.error('Error during call to suggestCharts:', error);\n","      }\n","      quickchartButtonEl.classList.remove('colab-df-spinner');\n","      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n","    }\n","    (() => {\n","      let quickchartButtonEl =\n","        document.querySelector('#df-f9e92c5a-1cfa-44ab-9d2c-bb27ff037036 button');\n","      quickchartButtonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","    })();\n","  </script>\n","</div>\n","    </div>\n","  </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"merged_df","summary":"{\n  \"name\": \"merged_df\",\n  \"rows\": 50297,\n  \"fields\": [\n    {\n      \"column\": \"categorical_rating\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 3,\n        \"samples\": [\n          \"positive\",\n          \"negative\",\n          \"neutral\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"review_text\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 41850,\n        \"samples\": [\n          \"\\n  Very good ph\",\n          \"\\n  Redmi note 9 pro is best bugt phn fast fingrprnt sensr an long lasting 2 day battery bacp and goood camra quality ...\\ud83d\\ude0d\\ud83d\\ude0d\\n\",\n          \"I love I phone\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"}},"metadata":{},"execution_count":11}],"source":["merged_df = pd.concat([amazon_df, iphone_df, k8_df], axis=0)\n","\n","# Reset the index of the merged DataFrame, if needed\n","merged_df = merged_df.reset_index(drop=True)\n","\n","print(merged_df['categorical_rating'].value_counts())\n","print(merged_df.shape)\n","merged_df.head()"]},{"cell_type":"code","source":["\n","\n","# Assuming 'merged_df' is your DataFrame with a 'categorical_rating' colum\n","# Plot the value counts as a bar plot\n","merged_df['categorical_rating'].value_counts().plot(kind='bar')\n","\n","# Set the title and labels\n","plt.title('Rating Distribution')\n","plt.xlabel('Rating')\n","plt.ylabel('No. of Reviews')\n","\n","# Getting the categories from the 'categorical_rating' value counts\n","categories = merged_df['categorical_rating'].value_counts().index\n","\n","# Set custom labels for the x-axis with rotation\n","plt.xticks(ticks=range(len(categories)), labels=categories, rotation=45)\n","\n","# Show the plot\n","plt.show()\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":523},"id":"BYoQMQXU17gT","executionInfo":{"status":"ok","timestamp":1711022174875,"user_tz":-60,"elapsed":22,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}},"outputId":"23d0b352-3dd8-4a08-8665-61f077e2bd1b"},"id":"BYoQMQXU17gT","execution_count":12,"outputs":[{"output_type":"display_data","data":{"text/plain":["<Figure size 640x480 with 1 Axes>"],"image/png":"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0CBKly7NE088wfDhwx366tSpE+np6URHRxMVFYW/vz+zZ8+mQYMGzv9QRERExCWZ7Ha7vbCLKK6ys20kJl4s7DKuycPDDR+f0kRO+47DJ/K/VIVAYGVvZoxozfnzFzXptBjI+dnR9y1FhY7JguPrWzrPVxcW+TlZIiIiIq5IIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECRSyRERERJxAIUtERETECYpUyFqzZg3PP/88YWFh1K9fn86dO/Ppp59it9uNNt27dycoKCjXf4cPH3boKyUlhbFjx9K0aVMaNGjA0KFDOX36dK733LlzJ0899RTBwcG0adOGqKgoh/cDsNvtREVF0bp1a4KDg3nqqaf49ddfnfIZiIiIyK3Bo7ALuNJ//vMfKleuzOjRo/Hx8eHHH39k/PjxnDp1isGDBxvtGjZsyEsvveTw2ipVqjg8joyM5NChQ0ycOBFPT09mzJhB3759+eyzz/DwuLzbx44dIyIigpYtWxIZGcn+/ft55513cHd3JyIiwugrOjqamTNnMmrUKIKCgli6dCl9+vThiy++wM/Pz4mfiIiIiLiqIhWy5s6di6+vr/G4efPmXLhwgYULFzJw4EDc3C4PvFksFurXr3/Nfnbt2sWWLVuIiYkhNDQUAH9/f8LDw1m/fj3h4eEAxMTE4OPjw7Rp0zCbzTRv3pzExEQ++OADunfvjtls5tKlS8ybN48+ffrQq1cvABo1asSDDz5ITEwMEydOdMpnISIiIq6tSJ0uvDJg5ahVqxapqamkpaXluZ/NmzdjsVho2bKlsS0gIIBatWqxefNmh3b3338/ZrPZ2BYeHk5ycjK7du0CLp9OTE1NpUOHDkYbs9lMu3btHPoSERERuVKRCllXs2PHDipWrEiZMmWMbT///DP169enbt26PPvss/zyyy8Or4mLi8Pf3x+TyeSwPSAggLi4OADS0tL4+++/CQgIyNXGZDIZ7XL+/Ge7wMBATp48SUZGRsHsqIiIiNxSitTpwn/avn07sbGxDvOvmjRpQufOnalevTqnT58mJiaG3r17s3jxYho0aABAcnIyZcuWzdWft7c3e/bsAS5PjIfLpx6vZDab8fLyIikpyejLbDbj6enp0M5isWC320lKSqJkyZL53kcPj6Kbc93di25trkqfafGQ8z3r+5aiQsdk4SiyIevUqVMMHz6ckJAQevToYWwfOnSoQ7vWrVvTqVMn3n//faKjo292mTfEzc2Ej0/pwi5DbiKLxauwS5CbSN+3FDU6Jm+uIhmykpOT6du3L+XKlWPWrFnGhPerKVWqFPfeey/r1q0ztlksFk6dOpWrbVJSEt7e3gDGSFfOiFaOzMxM0tPTjXYWi4XMzEwuXbrkMJqVnJyMyWQy2uWHzWYnOTnvc81uNnd3N/1AFrDk5HSys22FXYY4Wc7Pjr5vKSp0TBYci8UrzyOCRS5kZWRk0L9/f1JSUvj444+vetrv3wQEBLBt2zbsdrvDvKwjR45w9913A5fD2R133GHMubqyjd1uN+Zg5fx55MgRatasabSLi4vjzjvvvKFThQBZWTrYi5PsbJu+82JE37cUNTomb64idXI2KyuLyMhI4uLimD9/PhUrVvzX16SlpfHdd99Rt25dY1tYWBhJSUls27bN2HbkyBH27t1LWFiYQ7sNGzZgtVqNbbGxsVgsFmN+V8OGDSlTpgxr1qwx2litVtavX+/Ql4iIiMiVitRI1qRJk9i0aROjR48mNTXVYVX12rVrs3v3bubPn0+7du2oXLkyp0+fZuHChZw5c4b33nvPaNugQQNCQ0MZO3YsL730Ep6enkyfPp2goCDat29vtIuIiOCrr75i5MiRdO3alQMHDhATE8Pw4cONZR08PT3p378/s2bNwtfXl7vvvptly5Zx4cIFhwVLRURERK5UpELW1q1bAZg6dWqu5zZs2ECFChWwWq1Mnz6dCxcu4OXlRYMGDZg0aRLBwcEO7WfMmMGUKVOYMGECWVlZhIaGMm7cOGO1d4Bq1aoRExPD1KlT6devH76+vgwdOpQ+ffo49NW3b1/sdjsLFiwgMTGRWrVqERMTo9XeRURE5JpM9n/eqE9umuxsG4mJFwu7jGvy8HDDx6c0kdO+4/CJpMIux6UFVvZmxojWnD9/UfMhioGcnx1931JU6JgsOL6+pfM88b1IzckSERERuVUoZImIiIg4gUKWiIiIiBMoZImIiIg4gUKWiIiIiBMoZImIiIg4gUKWiIiIiBMoZImIiIg4QYGt+J6ens7q1avJzMzk3nvvpXLlygXVtYiIiIjLyVfIGjt2LLt37+brr78GIDMzkyeffJKDBw8CULZsWRYtWkTt2rULrlIRERERF5Kv04U//fQT7dq1Mx5//fXXHDx4kHfeeYevv/6a2267jdmzZxdYkSIiIiKuJl8h6+zZsw6nA7/99lvq1KlDp06duOuuu3jyySfZvXt3gRUpIiIi4mryFbK8vLxISUkBICsri59//pnQ0FDj+dKlSxvPi4iIiBRH+ZqTdc899/DJJ58QEhLCxo0buXjxIvfdd5/x/F9//UX58uULrEgRERERV5OvkBUZGclzzz3H448/jt1u54EHHiA4ONh4/ptvvqFhw4YFVqSIiIiIq8lXyKpbty5r1qxh586dWCwWmjZtajyXnJxMt27dHLaJiIiIFDf5XifL19eXtm3b5tpusVjo2bPnDRUlIiIi4uryFbKeeuopmjRpQuPGjWnYsCEWi6Wg6xIRERFxafkKWWXLlmX58uXMnz8fNzc3AgMDady4MU2aNKFRo0ZUrFixoOsUERERcSn5Clnz58/Hbrfz559/sn37dnbs2ME333zDsmXLMJlMVK5cmSZNmjBlypSCrldERETEJeR7TpbJZKJ27drUrl2bHj16kJmZyVdffUV0dDRHjx7lxIkTClkiIiJSbOU7ZF28eJFdu3YZI1m7d+8mMzOTgIAAnnrqKRo3blyQdYqIiIi4lHyFrMcee4z9+/djMpkICgqiSZMm9OzZk0aNGuHj41PQNYqIiIi4nHyFrL179+Lm5sb999/PvffeS+PGjalWrVpB1yYiIiLisvIVsj777DPjNOG0adNITEykfPnyNGrUiMaNG9O4cWNq1qyJyWQq6HpFREREXEK+7114zz33GIuOHjlyxAhdCxcu5I033qBMmTL88ssvBVqsiIiIiKtwu9EOMjIyOHXqFKdOneLkyZMkJiZit9tJS0sriPpEREREXFK+RrI2bdrEL7/8wo4dO/jjjz/IysrC09OT4OBgevXqRePGjWnQoEFB1yoiIiLiMvIVsp5//nksFgsNGzZk2LBhNG7cmDp16lCiRImCrk9ERETEJeUrZH3xxRfcfffdmtguIiIicg35mpMVFBTkELBSUlLIzs4usKJEREREXF2+J77//vvvREREUK9ePUJCQvj5558BSExM5Pnnn+enn34qsCJFREREXE2+QtbOnTvp1q0bx44d4+GHH8ZmsxnP+fr6kpqayscff1xgRYqIiIi4mnyFrOnTpxMYGEhsbCzDhw/P9XxISAi//fbbDRcnIiIi4qryFbJ+//13HnvsMcxm81Unv1esWJGzZ8/ecHEiIiIiripfIcvDw8PhFOE/JSQkUKpUqXwXJSIiIuLq8hWy6tWrx7p16676XFpaGitXrqRJkyY3VJiIiIiIK8tXyBo6dCh79uyhX79+bN68GYD9+/ezYsUKHnvsMRITExk4cGCBFioiIiLiSvI9khUVFcWxY8d46aWXAJg6dSrjx4/HZrMRFRVFzZo1C7RQEREREVeSrxXfAZo3b866dev4888/OXr0KHa7HT8/P+rUqZPvleDXrFnDl19+yR9//EFycjLVqlWje/fuPP744w59rlixgvnz53Py5En8/f0ZPnw4bdq0cegrJSWFKVOm8O2332K1WmnVqhXjxo3j9ttvd2i3c+dO3nzzTf7880/Kly9P165d6du3r8P72e12oqOj+eijj0hMTKRWrVqMGTOG+vXr52s/RURE5NaX78VIc9SqVYsOHToQHh5O3bp1b+hWO//5z3/w8vJi9OjRzJ07l7CwMMaPH8+cOXOMNqtXr2b8+PF06NCB6Oho6tevz+DBg/n1118d+oqMjGTr1q1MnDiRd955hyNHjtC3b1+ysrKMNseOHSMiIoIKFSowb948evbsycyZM1mwYIFDX9HR0cycOZNevXoxb948KlSoQJ8+fYiPj8/3voqIiMitLU8jWb/88guAMZk95/G/ud7J73PnzsXX19d43Lx5cy5cuMDChQsZOHAgbm5uzJw5k44dOxIZGQlAs2bNOHDgAHPmzCE6OhqAXbt2sWXLFmJiYggNDQXA39+f8PBw1q9fT3h4OAAxMTH4+Pgwbdo0zGYzzZs3JzExkQ8++IDu3btjNpu5dOkS8+bNo0+fPvTq1QuARo0a8eCDDxITE8PEiROvax9FRESkeMhTyOrevTsm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/vrrL7y9vWnfvj116tQBICEhgblz57Jq1SouXbpE06ZNnVKwiIiIiCvIc8g6fPgwzz77LBcuXDBWeJ8/fz5vv/02JpOJl19+mczMTNq3b09ERIQRvkRERESKozyHrPfee4+0tDReeeUVGjduzPHjx5kyZQpvvPEGKSkptGnThlGjRuHn5+fMekVERERcQp5D1vbt2+natStPP/00AHfddRfu7u707duXRx99lClTpjitSBERERFXk+eJ7xcuXCAoKMhhW82aNQFo27ZtwVYlIiIi4uLyHLJsNhseHo4DXzmPS5UqVbBViYiIiLi467q6cM+ePXh6ehqPL168iMlkYseOHaSkpORq3759+xuvUERERMQFXVfIWrRoEYsWLcq1ffbs2bm2mUwm/vzzz/xXJiIiIuLC8hyyPvzwQ2fWISIiInJLyXPI0uKiIiIiInlXILfVERERERFHClkiIiIiTqCQJSIiIuIEClkiIiIiTpCnkLVv376rroMlIiIiIleXp5D16KOP8t133xmPe/TowbZt25xVk4iIiIjLy1PIKlmyJBkZGcbjn3/+mbNnzzqtKBERERFXl6d1soKCgli4cCFubm6ULVsWgN9//93hFjtXo9vqiIiISHGVp5D18ssvM2zYMF5++WXg8i1zPvzww/+5CrxuqyMiIiLFWZ5CVt26dVm/fj1//fUX586do3v37gwYMIAWLVo4uz4RERERl5Tn2+p4eHgQEBBAQEAAjz76KG3atKFevXrOrE1ERETEZeU5ZF1pypQpDo9zJsWXLFnyxisSERERuQXkK2QBnDx5klmzZvH9999z/vx5AHx8fLj33nsZPHgwlStXLrAiRURERFxNvkLW4cOH6datGykpKbRo0YLAwEAA4uLi+OKLL9i0aRMfffQRAQEBBVqsiIiIiKvIV8h69913cXNzY9WqVQQFBTk8d+DAAXr16sW7777LnDlzCqRIEREREVeTr3sX/vLLL3Tv3j1XwAK4++67eeaZZ/j555+vu99jx44xYcIEOnfuTO3atenUqVOuNjnv+8//Dh8+7NAuJSWFsWPH0rRpUxo0aMDQoUM5ffp0rv527tzJU089RXBwMG3atCEqKgq73e7Qxm63ExUVRevWrQkODuapp57i119/ve79ExERkeIjXyNZWVlZ/3OSu5eXF1lZWdfd78GDB/n++++pV68eNpstV9jJ0bBhQ1566SWHbVWqVHF4HBkZyaFDh5g4cSKenp7MmDGDvn378tlnn+HhcXm3jx07RkREBC1btiQyMpL9+/fzzjvv4O7uTkREhNFXdHQ0M2fOZNSoUQQFBbF06VL69OnDF198gZ+f33Xvp4iIiNz68hWyatWqxYoVK+jSpYuxAnyO1NRUPv30U2rXrn3d/d533320bdsWgNGjR7Nnz56rtrNYLNSvX/+a/ezatYstW7YQExNDaGgoAP7+/oSHh7N+/XrCw8MBiImJwcfHh2nTpmE2m2nevDmJiYl88MEHdO/eHbPZzKVLl5g3bx59+vShV69eADRq1IgHH3yQmJgYJk6ceN37KSIiIre+fJ0uHDJkCPHx8XTo0IFp06axcuVKVq5cybvvvsuDDz7IX3/9xZAhQ66/GLd8lZPL5s2bsVgstGzZ0tgWEBBArVq12Lx5s0O7+++/H7PZbGwLDw8nOTmZXbt2AZdPJ6amptKhQwejjdlspl27dg59iYiIiFwpXyNZzZs3JyoqirfeeouoqCiH52rVqsXbb79Ns2bNCqTAq/n555+pX78+2dnZ1KtXj2HDhtGkSRPj+bi4OPz9/TGZTA6vCwgIIC4uDoC0tDT+/vvvXFdABgQEYDKZiIuLIyQkxGj/z3aBgYEsWrSIjIwMrQ8mIiIiueR7nawWLVrw+eefc+bMGU6ePAnAnXfeSYUKFQqsuKtp0qQJnTt3pnr16pw+fZqYmBh69+7N4sWLadCgAQDJycm5TmMCeHt7G6cgU1JSgMunHq9kNpvx8vIiKSnJ6MtsNue6GbbFYsFut5OUlHRDIcvDo2BG75zB3b3o1uaq9JkWDznfs75vKSp0TBaOfIesHBUqVHB6sLrS0KFDHR63bt2aTp068f777xMdHX3T6igIbm4mfHxKF3YZchNZLF6FXYLcRPq+pajRMXlz3XDIKmylSpXi3nvvZd26dcY2i8XCqVOncrVNSkrC29sbwBjpyhnRypGZmUl6errRzmKxkJmZyaVLlxxGs5KTkzGZTEa7/LDZ7CQnp+X79c7m7u6mH8gClpycTna2rbDLECfL+dnR9y1FhY7JgmOxeOV5RNDlQ9bVBAQEsG3bNux2u8O8rCNHjnD33XcDl8PZHXfcYcy5urKN3W435mDl/HnkyBFq1qxptIuLi+POO++84flYWVk62IuT7GybvvNiRN+3FDU6Jm8ulz85m5aWxnfffUfdunWNbWFhYSQlJbFt2zZj25EjR9i7dy9hYWEO7TZs2IDVajW2xcbGYrFYjPldDRs2pEyZMqxZs8ZoY7VaWb9+vUNfIiIiIlcqUiNZ6enpfP/99wCcOHGC1NRU1q5dC0DTpk2Ji4tj/vz5tGvXjsqVK3P69GkWLlzImTNneO+994x+GjRoQGhoKGPHjuWll17C09OT6dOnExQURPv27Y12ERERfPXVV4wcOZKuXbty4MABYmJiGD58uLGsg6enJ/3792fWrFn4+vpy9913s2zZMi5cuOCwYKmIiIjIlYpUyDp37hzDhg1z2Jbz+MMPP6RSpUpYrVamT5/OhQsX8PLyokGDBkyaNIng4GCH182YMYMpU6YwYcIEsrKyCA0NZdy4ccZq7wDVqlUjJiaGqVOn0q9fP3x9fRk6dCh9+vRx6Ktv377Y7XYWLFhAYmIitWrVIiYmRqu9i4iIyDWZ7Ne6d404XXa2jcTEi4VdxjV5eLjh41OayGnfcfhEUmGX49ICK3szY0Rrzp+/qPkQxUDOz46+bykqdEwWHF/f0nme+F7gc7Li4+O5//77jdvjiIiIiBRHTjldaLfbr3lzZxEREZHioMBDlp+fHxs3bizobkVERERcissv4SAiIiJSFN3QSNbPP//Md99953DvwtatW9O0adMCKU5ERETEVeUrZGVmZjJy5Ei+/fZb7Ha7cZPl5ORkFi5cSLt27Xj33XcpUaJEgRYrIiIi4irydbpwzpw5fPPNN/Tu3ZstW7bw888/8/PPP7N161b69OnD+vXrmTNnTkHXKiIiIuIy8hWyvvrqKx599FFefPFFbrvtNmN7+fLleeGFF3jkkUf48ssvC6xIEREREVeTr5B15syZXCusXyk4OJgzZ87kuygRERERV5evkFWpUiV+/vnnaz7/yy+/UKlSpXwXJSIiIuLq8hWyHnnkEdasWcOECROIi4sjOzsbm81GXFwcr7zyCmvXruXRRx8t6FpFREREXEa+ri4cMGAA8fHxfPLJJ6xYsQI3t8tZzWazYbfbefTRRxkwYECBFioiIiLiSvIVstzd3Zk6dSq9evVi8+bNnDhxAoDKlSsTFhZGzZo1C7RIEREREVdzQ4uR1qxZU4FKRERE5Cp0Wx0RERERJ8jzSNZDDz10XR2bTCatlSUiIiLFVp5DVrly5fLU7uzZsxw5cgSTyZTfmkRERERcXp5D1uLFi//n82fOnCE6OpqPP/4Yd3d3Hn744RsuTkRERMRV3dDEd7g8chUVFcUnn3xCVlYWDz30EM8//zxVq1YtiPpEREREXFK+Q1bOyNWV4WrgwIH4+fkVZH0iIiIiLum6Q9aZM2eIiopixYoVZGVl8fDDD/P8888rXImIiIhcIc8h6/Tp00a4ys7OpnPnzgwYMEDhSkREROQq8hyy2rVrR2ZmJrVq1aJ///5UqVKF5ORk/vjjj2u+5p577imQIkVEruTmZsLNrehewezu7ubwZ1Fls9mx2eyFXYbILSvPIevSpUsA7N27l8jIyP/Z1m63YzKZ+PPPP2+oOBGRf3JzM1GuXKkiH2AALBavwi7hf8rOtnHhQpqCloiT5DlkTZkyxZl1iIjkiZubCXd3N95ZuoPjCSmFXY7LqlKxLKOeaYSbm0khS8RJ8hyyHn30UWfWISJyXY4npHD4RFJhlyEick1Ff7xdRERExAUpZImIiIg4gUKWiIiIiBMoZImIiIg4gUKWiIiIiBMoZImIiIg4gUKWiIiIiBMoZImIiIg4gUKWiIiIiBMoZImIiIg4gUKWiIiIiBMoZImIiIg4gUKWiIiIiBMUqZB17NgxJkyYQOfOnalduzadOnW6arsVK1bwwAMPULduXR5++GE2bdqUq01KSgpjx46ladOmNGjQgKFDh3L69Olc7Xbu3MlTTz1FcHAwbdq0ISoqCrvd7tDGbrcTFRVF69atCQ4O5qmnnuLXX38tkH0WERGRW1ORClkHDx7k+++/p1q1agQGBl61zerVqxk/fjwdOnQgOjqa+vXrM3jw4FyhJzIykq1btzJx4kTeeecdjhw5Qt++fcnKyjLaHDt2jIiICCpUqMC8efPo2bMnM2fOZMGCBQ59RUdHM3PmTHr16sW8efOoUKECffr0IT4+vsA/AxEREbk1eBR2AVe67777aNu2LQCjR49mz549udrMnDmTjh07EhkZCUCzZs04cOAAc+bMITo6GoBdu3axZcsWYmJiCA0NBcDf35/w8HDWr19PeHg4ADExMfj4+DBt2jTMZjPNmzcnMTGRDz74gO7du2M2m7l06RLz5s2jT58+9OrVC4BGjRrx4IMPEhMTw8SJE537oYiIiIhLKlIjWW5u/7uc+Ph4jh49SocOHRy2h4eHs23bNjIzMwHYvHkzFouFli1bGm0CAgKoVasWmzdvNrZt3ryZ+++/H7PZ7NBXcnIyu3btAi6fTkxNTXV4T7PZTLt27Rz6EhEREblSkRrJ+jdxcXHA5VGpKwUGBmK1WomPjycwMJC4uDj8/f0xmUwO7QICAow+0tLS+PvvvwkICMjVxmQyERcXR0hIiNH+n+0CAwNZtGgRGRkZlCxZMt/75OFRpHKuA3f3olubq9JneuP0GRYsfZ7FQ873rO/75nKpkJWUlASAxWJx2J7zOOf55ORkypYtm+v13t7exinIlJSUq/ZlNpvx8vJy6MtsNuPp6ZnrPe12O0lJSfkOWW5uJnx8SufrteKaLBavwi5BxIGOyeJF3/fN5VIh61Zjs9lJTk4r7DKuyd3dTT+QBSw5OZ3sbFthl+HSdFwWLB2TxUPOz42+7xtnsXjleUTQpUKWt7c3cHkUqkKFCsb25ORkh+ctFgunTp3K9fqkpCSjTc5IV86IVo7MzEzS09Md+srMzOTSpUsOo1nJycmYTCajXX5lZelgL06ys236zqVI0TFZvOj7vrlc6uRszryonHlSOeLi4ihRogR+fn5GuyNHjuRa7+rIkSNGH6VKleKOO+7I1VfO63La5fx55MiRXO9555133tB8LBEREbl1uVTI8vPzo3r16qxdu9Zhe2xsLM2bNzeuEgwLCyMpKYlt27YZbY4cOcLevXsJCwsztoWFhbFhwwasVqtDXxaLhQYNGgDQsGFDypQpw5o1a4w2VquV9evXO/QlIiIicqUidbowPT2d77//HoATJ06QmppqBKqmTZvi6+vLkCFDGDVqFFWrViUkJITY2Fh2797NkiVLjH4aNGhAaGgoY8eO5aWXXsLT05Pp06cTFBRE+/btjXYRERF89dVXjBw5kq5du3LgwAFiYmIYPny4Edg8PT3p378/s2bNwtfXl7vvvptly5Zx4cIFIiIibuKnIyIiIq6kSIWsc+fOMWzYMIdtOY8//PBDQkJC6NSpE+np6URHRxMVFYW/vz+zZ882Rp5yzJgxgylTpjBhwgSysrIIDQ1l3LhxeHj83y5Xq1aNmJgYpk6dSr9+/fD19WXo0KH06dPHoa++fftit9tZsGABiYmJ1KpVi5iYGOP0pIiIiMg/mez/nLgkN012to3ExIuFXcY1eXi44eNTmshp33H4RFJhl+PSAit7M2NEa86fv6hJpzdIx2XB0DFZvOT83Oj7vnG+vqXzfHWhS83JEhEREXEVClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIELheyVq5cSVBQUK7/3nnnHYd2K1as4IEHHqBu3bo8/PDDbNq0KVdfKSkpjB07lqZNm9KgQQOGDh3K6dOnc7XbuXMnTz31FMHBwbRp04aoqCjsdrvT9lFERERcn0dhF5Bf8+fPp2zZssbjihUrGv+/evVqxo8fz4ABA2jWrBmxsbEMHjyYpUuXUr9+faNdZGQkhw4dYuLEiXh6ejJjxgz69u3LZ599hofH5Y/m2LFjRERE0LJlSyIjI9m/fz/vvPMO7u7uRERE3LT9FREREdfisiHrnnvuwdfX96rPzZw5k44dOxIZGQlAs2bNOHDgAHPmzCE6OhqAXbt2sWXLFmJiYggNDQXA39+f8PBw1q9fT3h4OAAxMTH4+Pgwbdo0zGYzzZs3JzExkQ8++IDu3btjNpudv7MiIiLiclzudOG/iY+P5+jRo3To0MFhe3h4ONu2bSMzMxOAzZs3Y7FYaNmypdEmICCAWrVqsXnzZmPb5s2buf/++x3CVHh4OMnJyezatcvJeyMiIiKuymVHsjp16sT58+e58847efLJJ3nuuedwd3cnLi4OuDwqdaXAwECsVivx8fEEBgYSFxeHv78/JpPJoV1AQIDRR1paGn///TcBAQG52phMJuLi4ggJCbmh/fDwKLo519296NbmqvSZ3jh9hgVLn2fxkPM96/u+uVwuZFWoUIEhQ4ZQr149TCYTGzduZMaMGSQkJDBhwgSSkpIAsFgsDq/LeZzzfHJyssOcrhze3t7s2bMHuDwx/mp9mc1mvLy8jL7yy83NhI9P6RvqQ1yLxeJV2CWIONAxWbzo+765XC5ktWrVilatWhmPQ0ND8fT0ZNGiRQwYMKAQK7t+Npud5OS0wi7jmtzd3fQDWcCSk9PJzrYVdhkuTcdlwdIxWTzk/Nzo+75xFotXnkcEXS5kXU2HDh1YsGABf/75J97e3sDlUagKFSoYbZKTkwGM5y0WC6dOncrVV1JSktEmZ6QrZ0QrR2ZmJunp6Ua7G5GVpYO9OMnOtuk7lyJFx2Txou/75rrlTs7mzJ/KmVeVIy4ujhIlSuDn52e0O3LkSK71ro4cOWL0UapUKe64445cfeW87p9ztURERERy3BIhKzY2Fnd3d2rXro2fnx/Vq1dn7dq1udo0b97cuEowLCyMpKQktm3bZrQ5cuQIe/fuJSwszNgWFhbGhg0bsFqtDn1ZLBYaNGjg5D0TERERV+VypwsjIiIICQkhKCgIgA0bNvDJJ5/Qo0cP4/TgkCFDGDVqFFWrViUkJITY2Fh2797NkiVLjH4aNGhAaGgoY8eO5aWXXsLT05Pp06cTFBRE+/btHd7vq6++YuTIkXTt2pUDBw4QExPD8OHDtUaWiIiIXJPLhSx/f38+++wzTp06hc1mo3r16owdO5bu3bsbbTp16kR6ejrR0dFERUXh7+/P7Nmzc408zZgxgylTpjBhwgSysrIIDQ1l3LhxxmrvANWqVSMmJoapU6fSr18/fH19GTp0KH369Llp+ywiIkWbm5sJNzfTvzcsJK60hIPNZsdmuzVuXWey6yZ8hSY720Zi4sXCLuOaPDzc8PEpTeS07zh84saWqyjuAit7M2NEa86fv6hJpzdIx2XB0DFZcNzcTJQrV8olAowryM62ceFCWpENWr6+pYvX1YUiIiKFxc3NhLu7G+8s3cHxhJR/f4FcU5WKZRn1TCPc3ExFNmRdD4UsERGRAnA8IUWjq+JAY5siIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQJSIiIuIEClkiIiIiTqCQlUeHDx+md+/e1K9fn5YtW/LWW2+RmZlZ2GWJiIhIEeVR2AW4gqSkJHr27En16tWZNWsWCQkJTJ06lYyMDCZMmFDY5YmIiEgRpJCVB8uXL+fixYvMnj2bcuXKAZCdnc2kSZPo378/FStWLNwCRUREpMjR6cI82Lx5M82bNzcCFkCHDh2w2Wxs3bq18AoTERGRIksjWXkQFxfH448/7rDNYrFQoUIF4uLi8t2vm5sJX9/SN1qe05hMl/+c2Lc5Wdm2wi3GxXm4X/59xtvbC7u9kItxcTouC4aOyYKjY7LguMJx6eZmynNbhaw8SE5OxmKx5Nru7e1NUlJSvvs1mUy4u+f9yyos5cp6FnYJtww3Nw0eFxQdlwVDx2TB0TFZcG6V4/LW2AsRERGRIkYhKw8sFgspKSm5ticlJeHt7V0IFYmIiEhRp5CVBwEBAbnmXqWkpHDmzBkCAgIKqSoREREpyhSy8iAsLIwff/yR5ORkY9vatWtxc3OjZcuWhViZiIiIFFUmu72ozt8vOpKSkujYsSP+/v7079/fWIz0oYce0mKkIiIiclUKWXl0+PBhXnvtNXbt2kXp0qXp3Lkzw4cPx2w2F3ZpIiIiUgQpZImIiIg4geZkiYiIiDiBQpaIiIiIEyhkiYiIiDiBQpaIiIiIEyhkiYiIiDiBQpaIiIiIEyhkiYiIiDiBQpaIiIiIEyhkiYiISC4ZGRn88ccfZGdnF3YpLkshS0RERHJ54YUX6NOnD7t27VLQyieFLCm2bDZbrm26y5QUFToWpbC9+OKLVKxYkQkTJrBz504FrXzQvQulWMrKysLDwwOr1crJkycxm82ULl0ai8WC3W7HZDIVdolSjOUcn9nZ2aSmpuLp6YmHhwceHh7YbDbc3PT7sdwcJ0+epG/fvthsNl599VUaNmyIu7t7YZflMhSypNjJzs7G3d2d1NRUBg0axN9//01aWho+Pj6MGTOGFi1aFHaJUoxdeXy+9NJLHD9+HLvdTo0aNXjhhReoVKlSYZcoxcyJEyfo16+fglY+6NchKXbc3d3JyMigW7duZGdnM2zYMEaNGkWjRo3o06cPK1asICsrq7DLlGLK3d2d9PR0nnzySc6dO0fnzp0JCwvj7NmzPPjgg/z222+FXaLcwq427lK5cmWioqJwc3PTqcPrpJAlxUrOXyBr167Fbrczbtw4OnbsyCOPPEJwcDDwf6dqrmwvcjPkHG9LliyhZMmSTJkyhT59+jBq1ChatmxJRkYGhw8fztVepCBkZ2cbUyVSUlJISUnh0qVLgIJWfilkSbGQ849Rzl8gp06dIiUlxTj1snr1asaOHcvIkSPp2rUrSUlJnDhxQnOz5KbKOd7i4+MpUaIEd9xxBwCxsbFMmzaNUaNG8dhjj5GSkkJycrKOTykwOaepAd5++20GDhzI008/zaBBg0hISAByBy1ddfjvFLLklmez2TCZTFitVmObyWQiOzubcuXKsW7dOkaOHMmIESPo27cv2dnZLF68mNmzZ5Oenl6IlUtxkHOV65X/WKWnp2O32ylZsiRr1qxhxIgRjBgxgueeew6r1UpMTAyLFy/WaW0pEHa73QhYw4cPJzY2lvvvv59evXqxZ88ennnmGQ4ePAj8X9AqUaIEQ4cO1enrf6GQJbc8Nzc3rFYrTz75JEuWLAGgc+fOpKWl8eSTTzJ8+HBeeOEF+vXrB8DBgwf56aefuP322/Hy8irM0qUYcHNzIzMzk549e7Jlyxbg8vG5b98+hg0bxogRIxg5ciR9+/YFYN++fWzfvp1SpUoZp7VFbkTOiOi8efPYv38/M2bMoFevXiQlJZGeno7VaqVXr14OQWvOnDn4+flx2223FWbpRZ5ClhQLKSkplCtXjl9++YXz58/j6+vL4MGDSUhIIDAwkF69epGamsru3buZMGECVquVIUOGAJr3Is539OhRTpw4wa+//gpAjRo16NixIz/88AMtWrSgb9++WK1W9u3bx+TJkzGZTPTo0aNwixaXd+XoqdVqxWq18sgjj1CvXj0WLlzIjBkzeOONN3jzzTex2+0MGDDAmBPo5+fH0qVLqVq1amGV7xK0hIMUGytWrODVV1/lww8/pEGDBiQkJBAbG8ucOXMoX748NpuNUqVK4eXlxeLFiylRooTDPAURZ5o6dSpffPEFX3/9NeXLl2ffvn18+OGHrFmzhnr16pGVlcXFixdxd3dn2bJlOj7lhly5HuD8+fPp0aMHhw8fpmLFipw7d47+/fvTq1cvunfvjslkYsyYMaxatQqz2cxnn31GjRo1CnkPXINCltxyrrw6EC7/hlaiRAkAevXqhdVqZd68eZQpUwar1cq5c+dYvXo17u7uVKlShTZt2uDu7p6rH5GC8M9glJmZidlsJiEhgd69e9OkSRMmTJiAu7s7Z8+eZd++faxevRpvb2+qV69Oly5ddHzKDblyQdtXXnmFTz75hFWrVhEUFITJZGLNmjVMmjSJ//znP9SsWROAd955h6NHjwIwYsQIAgICCqt8l6KfULklnDx5kgoVKlCiRAk8PDxIT09n5cqVdO7cmTJlygCXf3Nr164dCxcu5Pfff6d58+aYTCYqVapERESEQ3/Z2dn6B0wKzIULFyhXrhzwf+u0/fLLL7Rq1Qqz2QyAj48PTZs2ZceOHZw9e5aKFSty2223ERoaSmhoqEN/Oj7lRuQErN27d5OUlMT7779PYGCgMbJltVoxmUzEx8cTFBREamoq8fHxNGjQgO7duxvHrPw7zckSl3fy5Enat2/Ptm3bjG3vv/8+77zzDh07dmTZsmXs378fk8lEly5d8PLy4sMPPwQwblOSI2dgV6dgpKAcPnyYe++9lwMHDhjH14svvsjQoUPp3r27EarMZjP9+/fnxIkTfPTRR8brbTab8Todn1JQXn/9dSZPnsy+ffuoXbs2JUqUMP4uvO+++7j99tt58803ef755xkxYgTbtm2jbdu2CljXSSFLXF65cuWYM2cOYWFhxjINgwYNYtmyZbRo0YK5c+cyePBgoqKiSE1NZfjw4ezfv5/169cDONwHTusOSUEzmUyMGzeOu+++2whJY8aM4dVXX8VqtTJo0CBeeuklNm7cyO23306fPn3YvHkzf/zxB3D5+Mw5LnV8yvWy2+1XvXjH39+fuLg4jh49yr59+4D/uxK7TJkyLFq0iLp165KamorNZmPJkiVUq1btZpfv8jQnS24ZVquVp556iiZNmvDSSy8Z4Wnr1q1s3bqVDz/8kFq1alG+fHlOnDhBaGgoo0aN0qiA3BSZmZl069aN3r1707FjR2P70qVL+eGHH/juu+/o1KkTcPk0zvPPP8+jjz5aWOXKLcBms7Fx40bS09N56KGHAJgwYQJhYWG0bduWr776igkTJlC/fn1GjBhB3bp1gf+bx5qVlYW7uzuXLl2iZMmShbkrLksjWeKScoa1r1yMsUSJEjRu3JilS5cyd+5cMjIyAGjZsiUvvvgiq1atol69epw+fZqDBw/yxx9/KGCJU2VmZhr/n56ejqenJ2PHjmXjxo3G9meeeYaZM2cye/Zszpw5w/79+/nrr7/45ptvCqNkuYXYbDa2bt3K22+/zbJlyxgwYABr1qyhcuXKADz00EO8/PLL7Nu3j+joaGP0NOfKVQ8PD0wmkwLWjbCLuJjk5GT7J598Yt+/f7/dbrfbU1JS7F27drVfuHDBnp6ebp89e7Y9KCjIPnv2bPulS5fsdrvdnp2dbbfb7fb09HT7uXPn7AsWLLBbrVa73W6322y2wtkRuSVduHDBHhsba8/IyDAejxs3zm61Wu1xcXH2IUOG2O+55x77xo0bjdfkHIMJCQn2HTt22F9//XV7ZmZmodQvt5asrCx7nz597A0bNrQ3bdrUvnPnTmN7jk8++cTerFkz+5AhQ+x//PFHYZV6S9JIlrgM+/8/s52ZmcnatWt5/vnn2bVrF48//jhpaWlkZWVRsmRJevfuzeDBg5k1axbR0dFYrVbj1KGnpye+vr707t0bDw8PsrKyNM9FCtSZM2d4//33GTRoEBcuXODxxx/n0KFDZGRk4O/vz7Bhw7jvvvsYMmQImzZtAv5v3sztt99Ow4YNGTt2LCVKlHC4FZTI9bDb7cbpvrJlyxojqbt378ZqteLu7m4cX126dGHEiBHs2rWLd99915ijJTdOc7LEZaSnp+Pl5UVWVhanTp1iwIABnDhxgho1avD+++873N4hLS2NBQsWMHv2bIYOHUrfvn2NtbJEnCktLY0ff/yRMWPGYLPZqFOnDu+99x4Wi8UI+4cPH+a9995j48aNzJo1izZt2jgsDilyI65cBwtg586d2O12Zs2axfHjx3n22Wfp1q0bZrPZYb21jz76iIULF7J48WIqVapUWOXfUjSSJS7hzz//pH379iQkJODh4cHtt99OZmYmGRkZXLhwgcTERIf2pUqVok+fPgwZMoT333+f6dOn62a6clOUKlWKxo0bYzabuXjxIiaTyQhYOcdgYGCgMaIVGRnJ2rVrFbCkwOQErHHjxrFw4UKCgoJo1KgRc+bMoUqVKixevJiPPvrICFgXL15kz549dOvWjVWrVilgFSCFLHEJiYmJ9OrVi4oVK2Kz2TCbzbz44ovExMTg6enJsGHDcg1xlypVioiICLp168avv/6qSe5y06SkpDBgwADGjRvHH3/8wYABA4x/0K4MWsOHD6dOnTosXbq0kCuWW9GZM2eYMWMGq1ev5sKFC5QuXZrZs2cb9x1cuHAhx44dY+rUqYwZM4bk5GRj8WYpGDpdKC7l0qVLDBgwgBdeeIHatWuTnZ3NwYMHeeGFF8jKymL69OnGbSDOnj2Lh4cH5cqVM07F6JSMOMO17iF48eJFNm7cyKuvvkr9+vWZO3eucWomOTmZUqVKkZaWRpkyZRxO74hcrytPEV55PL700kusXbuWMWPG8OCDD1KuXDljvcDdu3fj5eVFdnY277//vrGEgxQchSwp8q4MRjt37uSFF17AarUSFRVFzZo1ycrK4uDBg7z44ovY7XYmTpxI2bJlGTVqFLfddhsLFy7M1Y9IQckZocrIyGD79u0cO3aMWrVqUaNGDcqWLUtqaiobN25k8uTJNGzYkClTppCSksLIkSMJDg5m/PjxQO55NCJ5dbW/23LuiQmX7zCwdu1axo4dawSt9PR01q1bx6VLl2jRogV+fn6FUfotTyFLirSc38iu/Evkhx9+YNasWZw4cYKYmBgjaB04cICXX36ZP//8kzvvvBNfX1+WLVumCe/iNDnHZ2pqKj169MBqtXL69GkqVaqEv78/EyZMwNfX1whar7/+Oh4eHpQtWxaz2cxnn32m41MKzNSpUzl58iQzZ84EHIPWqFGj2LBhAy+99BLt27fH19e3MEstNhSypMjKGSFIT08nOjqaunXr0qZNGwC2bNnCzJkzHYKWzWYjIyODzz77DE9PTx5//HHc3d0drp4RKWjp6en07NmTUqVKMWnSJKpVq0anTp3466+/aNy4MW+99Ra33XYbaWlpHD58mK+//pqyZcsyYMAAY46Wjk+5UWlpaUyZMoUffviBsLAwXn31VeD/glZSUhI9e/YkJSWFHj168Pjjj2v+1U2gkCVF0pUjBF27dsVisRAaGkpERITxm9kPP/zAzJkzOXnypBG0rtWPiDPY7XY++ugjvv32W1599VX8/PyIjIxkx44dhIeHExsbS82aNXnzzTevOnKg41Py62qnlxMTE4mOjmbNmjWEhoYyefJkh/YDBw5k+/bteHp6smbNGiwWy80uu9jRBAApknLul9WnTx/Kly/Pq6++agSs7OxsAFq1akVkZCSVK1emb9++/P7771ftR6Qg/fP30vLly9OpUyf8/PyYPHkyu3btYv78+YwZM4ZmzZrxww8/MHr0aE6fPp2rLx2fkh/Z2dlGwDp37hwpKSmkpqbi6+tL37596dChAz/88ANjx441XnPu3DksFguff/45X375pQLWTaKRLCmyNm3axGuvvcZ7771nXPXy22+/sWfPHrKzs3nssccoU6YMW7ZsYeLEidx111188MEHhVy13MpyRg+sVitJSUncdtttWK1WbDYb58+fp2fPnvTu3ZsnnngCDw8Ptm/fzogRI8jIyODhhx9m3Lhxhb0L4uKuHMGaNGkSv//+O+fPn6dSpUoMHDiQli1bkpSURHR0NF988QX+/v7cf//9bN++nd9++40VK1ZQsWLFQt6L4kMTAaTIysjIICMjg0uXLhEXF8fq1auZN28et99+OydPnuTHH3/kgw8+IDQ0lGnTpnHPPfcUdslyC7syYHXv3p177rmHiIgI7rzzTgASEhI4ffo05cqVM+ZY7d+/n/r16/PAAw/w4IMPFmb5covICVgjR45k+/bt9O7dm/T0dOLj44mIiGDs2LH06NGD/v37U7lyZZYtW8b8+fOpUKECUVFRClg3mUKWFAlXm18QHByMu7s7w4cPN1bPnjhxImFhYezZs4eBAweyc+dOGjZsSHBwMKA5LuIcOZPTL126RHJyMomJiWzatIkyZcrwzDPPcPvttxMYGIiPjw9ffPEFd9xxB9nZ2axZs4aGDRvSsWNHQMenFIyffvqJPXv28Nprr9GyZUvc3d3Zu3cvK1eu5Pjx41y6dImyZcvy1FNP8fjjj5OQkEC5cuUoW7ZsYZde7ChkSaG7ciXshIQE7HY7pUqVonLlyixdupTY2FgqVKhAcHAwNWrUMF4TEBCQazKx/gGTgma32/Hw8CA1NZWnn36aatWqUaFCBS5evMi8efOw2+08/fTT3Hnnnbz++uuMHDmSbt26UapUKapWrcqQIUOMvnR8SkE4d+4ciYmJVK5cGXd3d44dO0avXr3o2LEjw4cPx9PTk1OnTlGpUiXMZrPWwCpECllSqLKzs41/wCIjI4mPj+f8+fP4+voyYsQI2rdvz4ABA4z2mZmZHDt2jEWLFlGlShWqVq1aiNVLcWAymcjOzubFF1/Ew8ODF154gYoVK+Lh4cEbb7zBggULsNvtdO/enebNm7Nq1Sq2bNlCmTJlaNu2rZYRkRty5Sh/zv+np6djMpmoXr06J0+epEuXLrRs2ZJXX30VLy8vVq5cyaZNm3jjjTc0elXI9FMvhcrd3Z2MjAy6du1KmTJl6N27NxkZGWzdupXhw4fzwgsv0LNnT0wmE4mJicTExLBr1y4yMjL4z3/+g5ubm1bKFqdLS0vj5MmTtGjRgurVqxvbX3nlFex2O9HR0ZhMJp588kmqVKnC448/brTJ+UVC5HpdeXr57NmzWK1W7rjjDtq2bcv06dN57rnn2Lt3L61atWLSpEmULl2ahIQE/vvf/+Ll5aW/F4sA/eRLoclZxf2rr74iMzOTiRMnEhQUBEDnzp2Jiori7bffplq1arRp04bExER2795NYGAgr7zyihZylJumdOnSuLu7Ex8fb2yzWq2UKFGCMWPGsGPHDr744gvMZjPdu3fH29vbaKdThJJfOcfO2LFj+eWXXzh79iydO3emd+/ePP/88yxYsAAPDw8mT56Ml5cXx48fZ86cOWzbto1FixZRunTpQt4D0b9OUmhybpNz/vx5Lly4wG233WY85+PjQ9++fTlw4ADTpk2jQYMG3HXXXcyZM4eyZcsap3AUsKSgXW1k1G6307RpU7799lu+/fZb2rZta9wOx2q1Urp0aUqUKMG8efMIDg4mLCxMI6ySb1eOYE2ZMoWffvqJRx99lMzMTJYsWcKpU6fo1q0b3bp1Izo6mieeeIJy5cphs9k4fvw4UVFRBAQEFPJeCGgxUrnJbDZbrm2enp5cunSJkydPOrTx9fWlWbNmnD59mvT0dAAsFgsmkwm73a4RAilwWVlZxjINR48e5eTJk1y4cAF3d3eeffZZ3NzceP/99/n222+N1yQkJFCmTBnmzp1L/fr1iYqKAlDAknzL+btt3759lCpVitGjRzN48GBGjBjBggUL2L59O0uWLKF+/fosX76ctm3bUrNmTR566CGWLVtGrVq1CnkPJIcWI5WbJufUXmZmJvHx8Vy8eJHg4GDjqi0fHx+io6MpWbKk8ZolS5awbNkyFixYoPVdxKmuvJXTwIED+fvvv0lPT8fb25sXXniB1q1bc/ToUQYMGIDVaqVGjRpUqVKFrVu3Urp0aVasWMGLL77IX3/9xccff1zYuyMuLjo6mrlz5+Lp6UlUVBR169Y1TlH//vvv9O7dm1q1ajFx4kQCAwMLu1y5Bv2qJTfFPy+Df/bZZ3nyySd5+OGHWbJkCUOGDOHEiRP07duX3bt3k5CQwB9//MHKlSupVq0at99+e2Hvgtzici7C6NatGzabzbjwolmzZgwYMIClS5dSvXp1/vOf/9CxY0fOnz/Pzp07qV27NsuWLcNms3HixAmqVKmC1WrNdfsdketx3333Ub9+fZKSkjh8+DAAJUqUICsri7p16/Kf//yHQ4cOMXz4cP78808g9y2fpPBpQos4Xc4Igc1mY9iwYZQuXZrx48dz++23ExMTw9dff0316tUZPXo0s2bNokePHpjNZry9vbFYLLz33nuYTCbNcRGnybkIY/369djtdsaNG2fccDznXpk5x2ClSpUYNmwYbm5uZGZm4unpSWJiIm+//TYHDx7ktddeM+ZrieRXYGAgkyZN4oUXXuCdd96hXLlytG7d2rjgp06dOnzwwQcMHz7cuA9hzjxXKToUssTpckYIfvrpJ2677Ta6dOlC48aNgct/kSxZsoR169Zx9OhRli9fzueff47VaqVcuXI89NBDWmdInC7nH6dTp06RnJxMpUqVAFi9ejVjx441Fhi9cOECKSkpxuKOnp6e/Pe//2XatGmcP3+exYsX69SNFBg/Pz/efvttxo4dy5QpUwAcgla9evVYu3YtZrO5kCuVa9GcLHE6u93OhAkT+Prrr/Hw8ODjjz8mICCAzMxMzGYz58+fZ8yYMZw6dYrPP/881+t1KxJxhitHRnNGsqKiovjwww/ZsmUL69atY9iwYYwYMYJ+/fqRnZ3NBx98QHx8PK+88gpeXl5GX7GxsdStW1cra4tT/PXXX7z88sskJCTw8ssvc++99xZ2SZJHOvciTmcymejVqxcNGzYkJSWFHTt2AGA2m8nMzMTHx4eePXuyb98+/vjjj1yvV8CSgpZzFWFmZiZxcXEcOHAAgEceeQSr1cpjjz1GZGQkL774Iv369QPg4MGD/Pe//6VixYpGwMq5EjY8PFwBS5ymatWqvP7661SuXJkXX3yRLVu2FHZJkkcKWXJTBAYGMnHiROrVq8fbb7/Nhg0bAIxh7oSEBHx9fR1GB0ScJecijGeeeYZnn32Wzp07M2bMGJKSknj++edJTk7G39+fHj16kJKSwu7du5kwYQJWq9W4F6HdbtccQblpqlatyoQJE2jQoIECvQvR6UK5qeLj4xk7diz79u3jhRdeoF69epw/f55p06bh4eHBkiVL9A+XOE3OqWe73U7//v3JysoiPDyctLQ0ZsyYQdOmTenatStHjhxh3rx5xorZpUuXxsvLi8WLF1OiRAmdwpZCk7OMg7gGhSy56eLj4xk1ahS//fYbpUqVon379ly4cIGZM2diNpt1FaE4VUZGBjt27GD9+vU88sgjNGjQAIDdu3fTp08fGjRowODBg6lUqRLr1q3DZrPh5+dH69atdRGGiFwXhSwpFPHx8UyYMIH4+HhGjBhBeHg4gDEZXsQZrrwIo2zZsnz++ef4+voaowN79uyhV69e11zkUSNYInI9NFwghcLPz4+JEydy5513MmPGDL7//nsABSxxqisvwjh9+jTbtm0D/m+Rxzp16rBo0SIOHjzIsGHDjEUgc34XVcASkeuhkCWFplq1akyePFlXzMhNlXMRRv369XnzzTf57rvvAIy1h+655x4++OADKlasSPXq1QEt8igi+aPThVLojhw5wptvvsmYMWOoVq1aYZcjxcSVaw+NHTuW1q1bA+Sac6VThCKSXwpZUiToihkpDDlB6/Tp04wdO1aLPIpIgdLpQikSFLCkMOQs8njHHXcwfPhwdu7cWdglicgtRCNZIlLsxcXFsXTpUsaOHatTgyJSYBSyRESuoDlYIlJQFLJEREREnEBzskREREScQCFLRERExAkUskREREScQCFLRERExAkUskREREScQCFLRERExAkUskREnGjWrFkEBQUVdhkiUggUskSk2Fm5ciVBQUHGf7Vr16ZVq1aMHj2ahISE6+4vPT2dWbNm8dNPPzmhWhFxVVqMVESKnZUrVzJmzBiGDh1KlSpVyMzM5Ndff2XVqlVUrlyZr7/+Gk9Pzzz3l5iYSPPmzRk8eDBDhgxxeC4rK4vs7Ozr6k9Ebg0ehV2AiEhhCQsLo27dugB06dIFHx8foqOj2bBhA+Hh4QXyHh4eHnh46K9akeJIpwtFRP6/xo0bAxAfHw9AZmYm7733Ho899hiNGjWifv36dOvWjf/+97/Ga44fP07z5s0BmD17tnEKctasWcDV52QFBQXx6quv8u2339KpUyfq1KlDx44d2bx5c66afvrpJx577DHq1q1L27ZtWb58ueZ5ibgI/XolIvL/nThxAgCLxQJAamoqK1asoFOnTnTp0oWLFy/y6aef8txzz7FixQpq1aqFr68vEydOZOLEibRr14527doB/GsI2rFjB+vXr6dbt26ULl2axYsXM3ToUDZt2oSPjw8Ae/fu5bnnnqNChQoMGTIEm83GnDlz8PX1deKnICIFRSFLRIqt1NRUEhMTyczM5LfffmP27NmYzWbatGkDgLe3Nxs3bsRsNhuvefLJJ+nQoQOLFy/mjTfeoFSpUjzwwANMnDiRoKAgOnfunKf3Pnz4MLGxsVStWhWAkJAQOnfuzOrVq3n22WcBmDlzJu7u7ixbtoyKFSsC0KFDhwI7lSkizqWQJSLFVq9evRweV65cmbfffptKlSoB4O7ujru7OwA2m43k5GRsNht16tRh7969N/TeLVq0MAIWQM2aNSlTpoxxqjI7O5tt27bRtm1bI2ABVKtWjVatWrFp06Yben8RcT6FLBEptiZMmIC/vz8pKSl89tln/PLLLw6jVgCrVq1iwYIFHDlyBKvVamyvUqXKDb33HXfckWubt7c3ycnJAJw7d46MjAyqVauWq93VtolI0aOQJSLFVnBwsHF1Ydu2benWrRsjR45k7dq1lC5dmi+++ILRo0fTtm1bIiIiKF++PO7u7sybN88YccqvnBGyf9KqOiK3Dl1dKCLC5dAzYsQITp8+zdKlSwFYt24dfn5+zJ49m0ceeYRWrVrRokULLl265PBak8lU4PWUL18eT09Pjh07luu5q20TkaJHIUtE5P8LCQkhODiYRYsWcenSJWO06crRpd9++41ff/3V4XVeXl4Axqm+guDu7k6LFi3YsGGDwyr0x44d44cffiiw9xER59HpQhGRK0RERDBs2DBWrlxJ69atWb9+PYMGDaJ169YcP36c5cuXc9ddd5GWlma8pmTJktx1112sWbOG6tWrU65cOWrUqMHdd999Q7UMHjyYLVu20LVrV7p27YrNZmPJkiXUqFGDP//880Z3VUScTCNZIiJXaN++PVWrVmXBggU88sgjjBgxgv379zN58mS2bNnC22+/TZ06dXK9bvLkydx+++1MmTKFESNGsG7duhuupU6dOkRHR+Pt7c17773Hp59+ytChQ2nevLlu0yPiAnTvQhERFzNw4EAOHTrE+vXrC7sUEfkfNJIlIlKEZWRkODw+evQomzdvpmnTpoVUkYjkleZkiYgUYW3btuXRRx/Fz8+PEydOsHz5ckqUKMFzzz1X2KWJyL9QyBIRKcJatWrF6tWrOXPmDGazmfr16zNixAiqV69e2KWJyL/QnCwRERERJ9CcLBEREREnUMgSERERcQKFLBEREREnUMgSERERcQKFLBEREREnUMgSERERcQKFLBEREREnUMgSERERcYL/B6uuzEu2GqFbAAAAAElFTkSuQmCC\n"},"metadata":{}}]},{"cell_type":"markdown","id":"2cfc1f8b-1d68-4511-a070-db02d566c663","metadata":{"id":"2cfc1f8b-1d68-4511-a070-db02d566c663"},"source":["## Preparing Data for Model"]},{"cell_type":"code","execution_count":14,"id":"7046f96c-f892-49dd-a2b4-4a354360d389","metadata":{"id":"7046f96c-f892-49dd-a2b4-4a354360d389","executionInfo":{"status":"ok","timestamp":1711022195537,"user_tz":-60,"elapsed":3,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}}},"outputs":[],"source":["# Step 1: Create X and y\n","X = df['review_text']\n","y = pd.get_dummies(df['categorical_rating'])  # Step 2: One-hot encode y"]},{"cell_type":"code","execution_count":16,"id":"f09e6901-9dd8-40d3-a152-b8ff50556aa8","metadata":{"id":"f09e6901-9dd8-40d3-a152-b8ff50556aa8","executionInfo":{"status":"ok","timestamp":1711022204544,"user_tz":-60,"elapsed":321,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}}},"outputs":[],"source":["# Initial split: 80% for training, 20% for temporary dataset\n","X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.2, random_state=42)\n","\n","# Split the temporary dataset equally into validation and test sets: 10% each of the original dataset\n","X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)"]},{"cell_type":"markdown","id":"1f689a72-445f-4cbc-bbd3-353b1b35875e","metadata":{"id":"1f689a72-445f-4cbc-bbd3-353b1b35875e"},"source":["## Classification with BERT"]},{"cell_type":"code","execution_count":17,"id":"1c044f49-2938-496d-8d90-513fff0fbee4","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":311,"referenced_widgets":["08fcac8cfc854c00a17144ba84dccb58","a2933dc419e34fa593bd810ad569b578","81df48f4312d4394b921722face0f3ba","7f1110b7cd53416194314476423f5b28","6439498bc71b4829949a863a3d5056ac","f9e1499ee3d740ef84a71189abeeb668","131ef0c0ccf94a4e8e0b575bccbc8a1c","775f90d5fadc41638766eaca4e13cff4","9019e22930524115b6b795d4c2fadd5e","57e195f5e9a64219ac5db8f69081b4f9","c92ae0d9392d4c12b004639f56e0a524","5ff7b6791ff040d984027f129a315b5f","407a7445f5314df3abce5754fd666b56","2a8918b550f849cf955ca7740e437de2","870c76577dff4cf19eaf86cb853cc3e6","b261094a745943759f8a4cc5bf8f1309","a06f219b95bd4120b48b0f012da220e5","5c37722fb6ca4a2c9701552d9178c4d9","0c3daaf973a1459a8169aa6b81211350","38c6c86ffcfc46d193b57b07187d75c7","75c79efa33f74765b74870451f212fce","6b7a778fe5fb4c318908ec57a125b7ae","8358946df2544a3aac8ea2fde739ccaf","5cdbb32ddc034387ad7133f613061cb0","c93182ccec5940308857ab2beae53be8","e623a78ff46e44309e45d95e3babd272","9aa273663dc147228785ef07e6c73082","7790068056e241e3ac1edfcada82ab8b","79743cb5f3fd430d8c99ecbcd43ebfcf","2b25942fe0574a1381e0892a19432077","cd0c97a1466a49c9b1fe1e333eae44fa","0f300ef4500f48609652eda5b5d0ba3d","d96159928bd84981ad1e326bc59d71c8","550fa3d96453413db16e41366528610c","2f84aae3cf25427cba6c97bc767686d3","8e3f7e255b9541dfba5ca5f85501dc61","fe23976820404dac82f849aaac03bfa9","3f4b193c50464060b5351ea37cad5923","624a51c43cfe45b0a5317b44efab3c27","b2eddccb0f0b4c8eb9f742dcc9ea434a","66172914938b489cb7fc2acb95eee02e","691ef9a9bc534e668dd1666c7eef7176","cec478667128442585f5f5bf92421320","83d015cc1c9543ec96b33296a256a150"]},"id":"1c044f49-2938-496d-8d90-513fff0fbee4","executionInfo":{"status":"ok","timestamp":1711022216062,"user_tz":-60,"elapsed":10945,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}},"outputId":"6e57a5a7-f008-402e-b3e7-ea862a69d8a4"},"outputs":[{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.10/dist-packages/huggingface_hub/utils/_token.py:88: UserWarning: \n","The secret `HF_TOKEN` does not exist in your Colab secrets.\n","To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n","You will be able to reuse this secret in all of your notebooks.\n","Please note that authentication is recommended but still optional to access public models or datasets.\n","  warnings.warn(\n"]},{"output_type":"display_data","data":{"text/plain":["tokenizer_config.json:   0%|          | 0.00/48.0 [00:00<?, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"08fcac8cfc854c00a17144ba84dccb58"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["vocab.txt:   0%|          | 0.00/232k [00:00<?, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"5ff7b6791ff040d984027f129a315b5f"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["tokenizer.json:   0%|          | 0.00/466k [00:00<?, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"8358946df2544a3aac8ea2fde739ccaf"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["config.json:   0%|          | 0.00/570 [00:00<?, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"550fa3d96453413db16e41366528610c"}},"metadata":{}},{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.10/dist-packages/transformers/tokenization_utils_base.py:2645: FutureWarning: The `pad_to_max_length` argument is deprecated and will be removed in a future version, use `padding=True` or `padding='longest'` to pad to the longest sequence in the batch, or use `padding='max_length'` to pad to a max length. In this case, you can give a specific length with `max_length` (e.g. `max_length=45`) or leave max_length to None to pad to the maximal input size of the model (e.g. 512 for Bert).\n","  warnings.warn(\n"]}],"source":["\n","# Load the BERT tokenizer\n","tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')\n","\n","# Tokenize and prepare the data for BERT\n","def encode_reviews(tokenizer, reviews, max_length):\n","    return tokenizer.batch_encode_plus(\n","        reviews,\n","        add_special_tokens=True,\n","        return_attention_mask=True,\n","        pad_to_max_length=True,\n","        max_length=max_length,\n","        truncation = True,\n","        return_tensors='tf',\n","    )\n","\n","# Choose a maximum sequence length for BERT\n","max_length = 256\n","\n","# Encode the datasets\n","train_encodings = encode_reviews(tokenizer, X_train.tolist(), max_length)\n","val_encodings = encode_reviews(tokenizer, X_val.tolist(), max_length)\n","test_encodings = encode_reviews(tokenizer, X_test.tolist(), max_length)"]},{"cell_type":"code","execution_count":19,"id":"8f1e352d-a0ad-43ab-b80e-a942821b53d1","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"8f1e352d-a0ad-43ab-b80e-a942821b53d1","executionInfo":{"status":"error","timestamp":1711022355925,"user_tz":-60,"elapsed":2573,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}},"outputId":"dc5b7075-29db-4d74-d382-e9a465eb488c"},"outputs":[{"output_type":"stream","name":"stderr","text":["Some weights of the PyTorch model were not used when initializing the TF 2.0 model TFBertModel: ['cls.predictions.transform.LayerNorm.bias', 'cls.predictions.bias', 'cls.seq_relationship.bias', 'cls.predictions.transform.dense.weight', 'cls.seq_relationship.weight', 'cls.predictions.transform.LayerNorm.weight', 'cls.predictions.transform.dense.bias']\n","- This IS expected if you are initializing TFBertModel from a PyTorch model trained on another task or with another architecture (e.g. initializing a TFBertForSequenceClassification model from a BertForPreTraining model).\n","- This IS NOT expected if you are initializing TFBertModel from a PyTorch model that you expect to be exactly identical (e.g. initializing a TFBertForSequenceClassification model from a BertForSequenceClassification model).\n","All the weights of TFBertModel were initialized from the PyTorch model.\n","If your task is similar to the task the model of the checkpoint was trained on, you can already use TFBertModel for predictions without further training.\n"]},{"output_type":"error","ename":"TypeError","evalue":"Exception encountered when calling layer 'embeddings' (type TFBertEmbeddings).\n\nCould not build a TypeSpec for name: \"tf.debugging.assert_less_1/assert_less/Assert/Assert\"\nop: \"Assert\"\ninput: \"tf.debugging.assert_less_1/assert_less/All\"\ninput: \"tf.debugging.assert_less_1/assert_less/Assert/Assert/data_0\"\ninput: \"tf.debugging.assert_less_1/assert_less/Assert/Assert/data_1\"\ninput: \"tf.debugging.assert_less_1/assert_less/Assert/Assert/data_2\"\ninput: \"Placeholder\"\ninput: \"tf.debugging.assert_less_1/assert_less/Assert/Assert/data_4\"\ninput: \"tf.debugging.assert_less_1/assert_less/y\"\nattr {\n  key: \"T\"\n  value {\n    list {\n      type: DT_STRING\n      type: DT_STRING\n      type: DT_STRING\n      type: DT_INT32\n      type: DT_STRING\n      type: DT_INT32\n    }\n  }\n}\nattr {\n  key: \"summarize\"\n  value {\n    i: 3\n  }\n}\n of unsupported type <class 'tensorflow.python.framework.ops.Operation'>.\n\nCall arguments received by layer 'embeddings' (type TFBertEmbeddings):\n  • input_ids=<KerasTensor: shape=(None, 256) dtype=int32 (created by layer 'input_ids')>\n  • position_ids=None\n  • token_type_ids=<KerasTensor: shape=(None, 256) dtype=int32 (created by layer 'tf.fill_1')>\n  • inputs_embeds=None\n  • past_key_values_length=0\n  • training=False","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)","\u001b[0;32m<ipython-input-19-c5b958e10c7a>\u001b[0m in \u001b[0;36m<cell line: 14>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     13\u001b[0m \u001b[0;31m# Get the sequence output\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 14\u001b[0;31m \u001b[0msequence_output\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbert\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_ids\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattention_mask\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mattention_masks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     16\u001b[0m \u001b[0;31m# Select the first token's last hidden state\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tf_keras/src/utils/traceback_utils.py\u001b[0m in \u001b[0;36merror_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m     68\u001b[0m             \u001b[0;31m# To get the full stack trace, call:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     69\u001b[0m             \u001b[0;31m# `tf.debugging.disable_traceback_filtering()`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 70\u001b[0;31m             \u001b[0;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfiltered_tb\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     71\u001b[0m         \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     72\u001b[0m             \u001b[0;32mdel\u001b[0m \u001b[0mfiltered_tb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/modeling_tf_utils.py\u001b[0m in \u001b[0;36mrun_call_with_unpacked_inputs\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m    426\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    427\u001b[0m         \u001b[0munpacked_inputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minput_processing\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconfig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfn_args_and_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 428\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0munpacked_inputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    429\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    430\u001b[0m     \u001b[0;31m# Keras enforces the first layer argument to be passed, and checks it through `inspect.getfullargspec()`. This\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/models/bert/modeling_tf_bert.py\u001b[0m in \u001b[0;36mcall\u001b[0;34m(self, input_ids, attention_mask, token_type_ids, position_ids, head_mask, inputs_embeds, encoder_hidden_states, encoder_attention_mask, past_key_values, use_cache, output_attentions, output_hidden_states, return_dict, training)\u001b[0m\n\u001b[1;32m   1232\u001b[0m             `past_key_values`). Set to `False` during training, `True` during generation\n\u001b[1;32m   1233\u001b[0m         \"\"\"\n\u001b[0;32m-> 1234\u001b[0;31m         outputs = self.bert(\n\u001b[0m\u001b[1;32m   1235\u001b[0m             \u001b[0minput_ids\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minput_ids\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1236\u001b[0m             \u001b[0mattention_mask\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mattention_mask\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/modeling_tf_utils.py\u001b[0m in \u001b[0;36mrun_call_with_unpacked_inputs\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m    426\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    427\u001b[0m         \u001b[0munpacked_inputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minput_processing\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconfig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfn_args_and_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 428\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0munpacked_inputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    429\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    430\u001b[0m     \u001b[0;31m# Keras enforces the first layer argument to be passed, and checks it through `inspect.getfullargspec()`. This\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/models/bert/modeling_tf_bert.py\u001b[0m in \u001b[0;36mcall\u001b[0;34m(self, input_ids, attention_mask, token_type_ids, position_ids, head_mask, inputs_embeds, encoder_hidden_states, encoder_attention_mask, past_key_values, use_cache, output_attentions, output_hidden_states, return_dict, training)\u001b[0m\n\u001b[1;32m    910\u001b[0m             \u001b[0mtoken_type_ids\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfill\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdims\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minput_shape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    911\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 912\u001b[0;31m         embedding_output = self.embeddings(\n\u001b[0m\u001b[1;32m    913\u001b[0m             \u001b[0minput_ids\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minput_ids\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    914\u001b[0m             \u001b[0mposition_ids\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mposition_ids\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/models/bert/modeling_tf_bert.py\u001b[0m in \u001b[0;36mcall\u001b[0;34m(self, input_ids, position_ids, token_type_ids, inputs_embeds, past_key_values_length, training)\u001b[0m\n\u001b[1;32m    204\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    205\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0minput_ids\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 206\u001b[0;31m             \u001b[0mcheck_embeddings_within_bounds\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_ids\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvocab_size\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    207\u001b[0m             \u001b[0minputs_embeds\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgather\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mweight\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindices\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minput_ids\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    208\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/tf_utils.py\u001b[0m in \u001b[0;36mcheck_embeddings_within_bounds\u001b[0;34m(tensor, embed_dim, tensor_name)\u001b[0m\n\u001b[1;32m    161\u001b[0m         \u001b[0mtensor_name\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0moptional\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mThe\u001b[0m \u001b[0mname\u001b[0m \u001b[0mof\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mtensor\u001b[0m \u001b[0mto\u001b[0m \u001b[0muse\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mthe\u001b[0m \u001b[0merror\u001b[0m \u001b[0mmessage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    162\u001b[0m     \"\"\"\n\u001b[0;32m--> 163\u001b[0;31m     tf.debugging.assert_less(\n\u001b[0m\u001b[1;32m    164\u001b[0m         \u001b[0mtensor\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    165\u001b[0m         \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0membed_dim\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtensor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/src/layers/core/tf_op_layer.py\u001b[0m in \u001b[0;36mhandle\u001b[0;34m(self, op, args, kwargs)\u001b[0m\n\u001b[1;32m    117\u001b[0m             \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnest\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mflatten\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    118\u001b[0m         ):\n\u001b[0;32m--> 119\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mTFOpLambda\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mop\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    120\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    121\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mNOT_SUPPORTED\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/src/utils/traceback_utils.py\u001b[0m in \u001b[0;36merror_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m     68\u001b[0m             \u001b[0;31m# To get the full stack trace, call:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     69\u001b[0m             \u001b[0;31m# `tf.debugging.disable_traceback_filtering()`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 70\u001b[0;31m             \u001b[0;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfiltered_tb\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     71\u001b[0m         \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     72\u001b[0m             \u001b[0;32mdel\u001b[0m \u001b[0mfiltered_tb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mTypeError\u001b[0m: Exception encountered when calling layer 'embeddings' (type TFBertEmbeddings).\n\nCould not build a TypeSpec for name: \"tf.debugging.assert_less_1/assert_less/Assert/Assert\"\nop: \"Assert\"\ninput: \"tf.debugging.assert_less_1/assert_less/All\"\ninput: \"tf.debugging.assert_less_1/assert_less/Assert/Assert/data_0\"\ninput: \"tf.debugging.assert_less_1/assert_less/Assert/Assert/data_1\"\ninput: \"tf.debugging.assert_less_1/assert_less/Assert/Assert/data_2\"\ninput: \"Placeholder\"\ninput: \"tf.debugging.assert_less_1/assert_less/Assert/Assert/data_4\"\ninput: \"tf.debugging.assert_less_1/assert_less/y\"\nattr {\n  key: \"T\"\n  value {\n    list {\n      type: DT_STRING\n      type: DT_STRING\n      type: DT_STRING\n      type: DT_INT32\n      type: DT_STRING\n      type: DT_INT32\n    }\n  }\n}\nattr {\n  key: \"summarize\"\n  value {\n    i: 3\n  }\n}\n of unsupported type <class 'tensorflow.python.framework.ops.Operation'>.\n\nCall arguments received by layer 'embeddings' (type TFBertEmbeddings):\n  • input_ids=<KerasTensor: shape=(None, 256) dtype=int32 (created by layer 'input_ids')>\n  • position_ids=None\n  • token_type_ids=<KerasTensor: shape=(None, 256) dtype=int32 (created by layer 'tf.fill_1')>\n  • inputs_embeds=None\n  • past_key_values_length=0\n  • training=False"]}],"source":["from transformers import TFBertModel\n","from keras.layers import Input, Dense, Dropout\n","from keras.models import Model\n","\n","\n","# Load the pre-trained BERT model\n","bert = TFBertModel.from_pretrained('bert-base-uncased')\n","\n","# Build the model\n","input_ids = Input(shape=(max_length,), dtype='int32', name='input_ids')\n","attention_masks = Input(shape=(max_length,), dtype='int32', name='attention_masks')\n","\n","# Get the sequence output\n","sequence_output = bert(input_ids, attention_mask=attention_masks)[0]\n","\n","# Select the first token's last hidden state\n","cls_token = sequence_output[:, 0, :]\n","\n","# Add custom layers\n","x = Dense(512, activation='relu')(cls_token)\n","x = Dropout(0.1)(x)\n","x = Dense(256, activation='relu')(x)\n","output = Dense(y.shape[1], activation='softmax')(x)\n","\n","# Compile the model\n","model = Model(inputs=[input_ids, attention_masks], outputs=output)\n","\n","# Adjust the learning rate\n","optimizer = Adam(learning_rate=2e-5)\n","\n","# Compile the model with the new optimizer\n","model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])\n","\n","# Summary of the model\n","model.summary()"]},{"cell_type":"code","execution_count":null,"id":"b57d8f57-cabc-473a-ac62-8dcaf57f4a4e","metadata":{"id":"b57d8f57-cabc-473a-ac62-8dcaf57f4a4e","executionInfo":{"status":"aborted","timestamp":1711022219304,"user_tz":-60,"elapsed":6,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}}},"outputs":[],"source":["from tensorflow.keras.callbacks import ModelCheckpoint\n","\n","model_save_path = r\"D:\\Marketing Paper\\best_model_amazon_one.h5\"\n","\n","checkpoint = ModelCheckpoint(model_save_path, monitor='val_accuracy', save_best_only=True)\n","\n","# Train the model\n","history = model.fit(\n","    [train_encodings['input_ids'], train_encodings['attention_mask']],\n","    y_train,\n","    validation_data=([\n","        val_encodings['input_ids'], val_encodings['attention_mask']\n","    ], y_val),\n","    epochs=5,\n","    batch_size=16,  # Specify your desired batch size here\n","    callbacks=[checkpoint]\n",")\n"]},{"cell_type":"code","execution_count":null,"id":"d8658999-f539-4874-94de-63db2d5a75f7","metadata":{"id":"d8658999-f539-4874-94de-63db2d5a75f7","executionInfo":{"status":"aborted","timestamp":1711022219304,"user_tz":-60,"elapsed":5,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}}},"outputs":[],"source":["from tensorflow.keras.models import load_model\n","\n","# Load the best model\n","best_model = load_model(model_save_path, custom_objects={'TFBertModel': TFBertModel})\n","\n","# # Recompile the model with the optimizer, loss, and metrics\n","# model.compile(optimizer=Adam(learning_rate=2e-5), loss='categorical_crossentropy', metrics=['accuracy'])\n","\n","# Evaluate the model on the test set\n","test_loss, test_acc = best_model.evaluate(\n","    [test_encodings['input_ids'], test_encodings['attention_mask']],\n","    y_test\n",")\n","\n","print(f\"Test Loss: {test_loss}, Test Accuracy: {test_acc}\")"]},{"cell_type":"code","execution_count":null,"id":"0ba34482-03e9-4805-9e8e-76d0f1df48fb","metadata":{"id":"0ba34482-03e9-4805-9e8e-76d0f1df48fb","executionInfo":{"status":"aborted","timestamp":1711022219304,"user_tz":-60,"elapsed":5,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}}},"outputs":[],"source":["# Assuming `test_encodings` is already prepared similar to `train_encodings` and `val_encodings`\n","predictions = best_model.predict([test_encodings['input_ids'], test_encodings['attention_mask']])\n"]},{"cell_type":"code","execution_count":null,"id":"11629a4d-d1c1-42c7-b03c-e5d7385987aa","metadata":{"id":"11629a4d-d1c1-42c7-b03c-e5d7385987aa","executionInfo":{"status":"aborted","timestamp":1711022219305,"user_tz":-60,"elapsed":6,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}}},"outputs":[],"source":["from sklearn.metrics import classification_report, confusion_matrix\n","\n","\n","\n","# Assuming you have predictions from the model\n","predicted_class_indices = predictions.argmax(axis=1)\n","\n","# Convert y_test from one-hot encoding to class indices\n","true_class_indices = y_test.idxmax(axis=1).apply(class_names.index).values\n","\n","\n","\n","# Generate the classification report using the true and predicted class indices\n","report = classification_report(true_class_indices, predicted_class_indices, target_names=class_names)\n","print(report)\n","\n","# Generate the confusion matrix\n","cm = confusion_matrix(true_class_indices, predicted_class_indices)\n","\n","# Calculate accuracy for each class\n","class_accuracies = cm.diagonal() / cm.sum(axis=1)\n","for class_name, accuracy in zip(class_names, class_accuracies):\n","    print(f'Accuracy for class {class_name}: {accuracy:.2f}')"]},{"cell_type":"code","execution_count":null,"id":"c5f2b09e-69d6-4fe9-9ed0-92b99bef54f8","metadata":{"id":"c5f2b09e-69d6-4fe9-9ed0-92b99bef54f8","executionInfo":{"status":"aborted","timestamp":1711022219305,"user_tz":-60,"elapsed":6,"user":{"displayName":"Usman Malik","userId":"03736284847648712355"}}},"outputs":[],"source":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.13"},"colab":{"provenance":[],"machine_shape":"hm","gpuType":"V100"},"accelerator":"GPU","widgets":{"application/vnd.jupyter.widget-state+json":{"08fcac8cfc854c00a17144ba84dccb58":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_a2933dc419e34fa593bd810ad569b578","IPY_MODEL_81df48f4312d4394b921722face0f3ba","IPY_MODEL_7f1110b7cd53416194314476423f5b28"],"layout":"IPY_MODEL_6439498bc71b4829949a863a3d5056ac"}},"a2933dc419e34fa593bd810ad569b578":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_f9e1499ee3d740ef84a71189abeeb668","placeholder":"​","style":"IPY_MODEL_131ef0c0ccf94a4e8e0b575bccbc8a1c","value":"tokenizer_config.json: 100%"}},"81df48f4312d4394b921722face0f3ba":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_775f90d5fadc41638766eaca4e13cff4","max":48,"min":0,"orientation":"horizontal","style":"IPY_MODEL_9019e22930524115b6b795d4c2fadd5e","value":48}},"7f1110b7cd53416194314476423f5b28":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_57e195f5e9a64219ac5db8f69081b4f9","placeholder":"​","style":"IPY_MODEL_c92ae0d9392d4c12b004639f56e0a524","value":" 48.0/48.0 [00:00&lt;00:00, 3.44kB/s]"}},"6439498bc71b4829949a863a3d5056ac":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f9e1499ee3d740ef84a71189abeeb668":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"131ef0c0ccf94a4e8e0b575bccbc8a1c":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"775f90d5fadc41638766eaca4e13cff4":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"9019e22930524115b6b795d4c2fadd5e":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"57e195f5e9a64219ac5db8f69081b4f9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c92ae0d9392d4c12b004639f56e0a524":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"5ff7b6791ff040d984027f129a315b5f":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_407a7445f5314df3abce5754fd666b56","IPY_MODEL_2a8918b550f849cf955ca7740e437de2","IPY_MODEL_870c76577dff4cf19eaf86cb853cc3e6"],"layout":"IPY_MODEL_b261094a745943759f8a4cc5bf8f1309"}},"407a7445f5314df3abce5754fd666b56":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a06f219b95bd4120b48b0f012da220e5","placeholder":"​","style":"IPY_MODEL_5c37722fb6ca4a2c9701552d9178c4d9","value":"vocab.txt: 100%"}},"2a8918b550f849cf955ca7740e437de2":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_0c3daaf973a1459a8169aa6b81211350","max":231508,"min":0,"orientation":"horizontal","style":"IPY_MODEL_38c6c86ffcfc46d193b57b07187d75c7","value":231508}},"870c76577dff4cf19eaf86cb853cc3e6":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_75c79efa33f74765b74870451f212fce","placeholder":"​","style":"IPY_MODEL_6b7a778fe5fb4c318908ec57a125b7ae","value":" 232k/232k [00:00&lt;00:00, 1.21MB/s]"}},"b261094a745943759f8a4cc5bf8f1309":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a06f219b95bd4120b48b0f012da220e5":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5c37722fb6ca4a2c9701552d9178c4d9":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"0c3daaf973a1459a8169aa6b81211350":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"38c6c86ffcfc46d193b57b07187d75c7":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"75c79efa33f74765b74870451f212fce":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6b7a778fe5fb4c318908ec57a125b7ae":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"8358946df2544a3aac8ea2fde739ccaf":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_5cdbb32ddc034387ad7133f613061cb0","IPY_MODEL_c93182ccec5940308857ab2beae53be8","IPY_MODEL_e623a78ff46e44309e45d95e3babd272"],"layout":"IPY_MODEL_9aa273663dc147228785ef07e6c73082"}},"5cdbb32ddc034387ad7133f613061cb0":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_7790068056e241e3ac1edfcada82ab8b","placeholder":"​","style":"IPY_MODEL_79743cb5f3fd430d8c99ecbcd43ebfcf","value":"tokenizer.json: 100%"}},"c93182ccec5940308857ab2beae53be8":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_2b25942fe0574a1381e0892a19432077","max":466062,"min":0,"orientation":"horizontal","style":"IPY_MODEL_cd0c97a1466a49c9b1fe1e333eae44fa","value":466062}},"e623a78ff46e44309e45d95e3babd272":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_0f300ef4500f48609652eda5b5d0ba3d","placeholder":"​","style":"IPY_MODEL_d96159928bd84981ad1e326bc59d71c8","value":" 466k/466k [00:00&lt;00:00, 1.64MB/s]"}},"9aa273663dc147228785ef07e6c73082":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"7790068056e241e3ac1edfcada82ab8b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"79743cb5f3fd430d8c99ecbcd43ebfcf":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"2b25942fe0574a1381e0892a19432077":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"cd0c97a1466a49c9b1fe1e333eae44fa":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"0f300ef4500f48609652eda5b5d0ba3d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d96159928bd84981ad1e326bc59d71c8":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"550fa3d96453413db16e41366528610c":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_2f84aae3cf25427cba6c97bc767686d3","IPY_MODEL_8e3f7e255b9541dfba5ca5f85501dc61","IPY_MODEL_fe23976820404dac82f849aaac03bfa9"],"layout":"IPY_MODEL_3f4b193c50464060b5351ea37cad5923"}},"2f84aae3cf25427cba6c97bc767686d3":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_624a51c43cfe45b0a5317b44efab3c27","placeholder":"​","style":"IPY_MODEL_b2eddccb0f0b4c8eb9f742dcc9ea434a","value":"config.json: 100%"}},"8e3f7e255b9541dfba5ca5f85501dc61":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_66172914938b489cb7fc2acb95eee02e","max":570,"min":0,"orientation":"horizontal","style":"IPY_MODEL_691ef9a9bc534e668dd1666c7eef7176","value":570}},"fe23976820404dac82f849aaac03bfa9":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_cec478667128442585f5f5bf92421320","placeholder":"​","style":"IPY_MODEL_83d015cc1c9543ec96b33296a256a150","value":" 570/570 [00:00&lt;00:00, 43.6kB/s]"}},"3f4b193c50464060b5351ea37cad5923":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"624a51c43cfe45b0a5317b44efab3c27":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b2eddccb0f0b4c8eb9f742dcc9ea434a":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"66172914938b489cb7fc2acb95eee02e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"691ef9a9bc534e668dd1666c7eef7176":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"cec478667128442585f5f5bf92421320":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"83d015cc1c9543ec96b33296a256a150":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}}}}},"nbformat":4,"nbformat_minor":5}